异常描述

  c#代码 dbcontext.Table.Where(x => x.B > 0).Update( x => new Table() { A = x.B } )  抛出异常:Ambiguous column name 'B'

测试环境

  .net4.5 + EF6.0 + SQLServer2008

测试模型

  

测试1

try
{
using (var container = new TestModelContainer())
{
var date = new DateTime(, , ); container.TestEntity.Where(l => l.Date2 > date).Update(d => new TestEntity() { Date1 = d.Date2 }); Console.WriteLine("Done!");
}
}
catch (AggregateException err)
{
Console.WriteLine("Error! " + err.InnerException.Message);
}

测试目的:结合Where和Update,datetime类型的表变量相互赋值,是否能通过

测试结果:

测试2

container.TestEntity.Where(l => l.Int2 == ).Update(d => new TestEntity() { Int1 = d.Int2 });
container.TestEntity.Where(l => l.Int2 > ).Update(d => new TestEntity() { Int1 = d.Int2 });

测试目的:结合Where和Update,int类型的表变量相互赋值,是否能通过

测试结果:

测试3

container.TestEntity.Where(l => l.Bool2 == false).Update(d => new TestEntity() { Bool1 = d.Bool2 });

测试目的:结合Where和Update,bit类型的表变量相互赋值,是否能通过

测试结果:

测试4

container.TestEntity.Where(l => l.Int2 == ).Update(d => new TestEntity() { Int1 =  });

测试目的:结合Where和Update,int类型赋值为常量,是否能通过

测试结果:

测试5

container.TestEntity.Where(l => l.Bool2 == false).Update(d => new TestEntity() { Int1 = d.Int2 });

测试目的:Where语句中未出现赋值相关变量,int类型的表变量相互赋值,是否能通过

测试结果:

测试结论

1. 用常量赋值的情况一切正常。(测试4)

2. 用变量赋值的情况时,如果查询过滤条件中没有赋值变量的相关判断语句,执行正常。(测试5)

3. 用变量赋值的情况时,如果查询过滤条件中有赋值变量的相关判断语句,且对应变量类型为int时,会提示列名不明确(Ambiguous column name),(测试2)。

相同前提下,datetime和bit类型执行正常。(测试1|3)

4. 还有其他的数据库类型待测试,且待测可空数据类型。

附上测试1、2两种情况时,跟踪到的相关sql语句

测试1的sql语句

测试2的sql语句

结合以上sql语句,不难看出,ef.extended生成的异常sql语句导致了相应的报错。

EntityFramework.Extended.Update.Ambiguous column name的更多相关文章

  1. EntityFramework.Extended 实现 update count+=1

    在使用 EF 的时候,EntityFramework.Extended 的作用:使IQueryable<T>转换为update table set ...,这样使我们在修改实体对象的时候, ...

  2. 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)

    前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...

  3. Mysql 该如何 Entity Framework 数据库迁移 和 如何更好的支持EntityFramework.Extended

    问题 1.在使用EntityFramework访问Mysql的时候,使用迁移来生成数据库或者更新数据库时候会遇到一些问题 2.EntityFramework.Extended对Mysql的支持不是很完 ...

  4. entity framework 新手入门篇(4)-entity framework扩展之 entityframework.extended

    对于EF的操作,我们已经有了大概的了解了,但对于实战来说,似乎还欠缺着一些常用的功能,那就是批量的删除,更新数据. 承接上面的部分,我们有一个叫做House的数据库,其中包含house表和seller ...

  5. 开发笔记:基于EntityFramework.Extended用EF实现指定字段的更新

    今天在将一个项目中使用存储过程的遗留代码迁移至新的架构时,遇到了一个问题——如何用EF实现数据库中指定字段的更新(根据UserId更新Users表中的FaceUrl与AvatarUrl字段)? 原先调 ...

  6. EntityFramework.Extended扩展用法

    EntityFramework.Extended是一个基于EntityFramework框架 IQueryable类型的扩展方法,包括Update.Delete. 它的优点就是 修改删除操作不仅仅有I ...

  7. EntityFramework 插件之EntityFramework.Extended (批量处理)

    接手了一个用EF来做的项目,由于项目中使用的原生处理,导致很多update都是采用先select 后 update的方式来实现,同时无法批量执行逻辑如:根据订单类型统一更新状态等.所以在经过了N多查找 ...

  8. EntityFramework.Extended 对EF进行扩展

    前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...

  9. 采用EntityFramework.Extended 对EF进行扩展

    今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这是一个对Entity Framework进行扩展的类库 ...

随机推荐

  1. [ios]quartz2d画板功功能实现核心代码

    //触摸开始 -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //    1,获取对 ...

  2. c# 对加密的MP4文件进行解密

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  3. iOS 比较版本号大小的方法

    比较iOS版本号大小 eg:3.2.0和3.1.0 或者 3.2.0和3.2比较 返回bool值变量YES or NO -(BOOL)compareVesionWithServerVersion:(N ...

  4. .Net程序员学用Oracle系列(29):PLSQL 之批量应用和系统包

    1.批量数据操作 1.1.批量生成数据 1.2.批量插入数据 2.批量生成脚本 3.生成数据字典 4.常见系统包 4.1.DBMS_OUTPUT 4.2.DBMS_RANDOM 4.3.其它系统包及常 ...

  5. bzoj 4765 普通计算姬(树状数组 + 分块)

    http://www.lydsy.com/JudgeOnline/problem.php?id=4765 很nice的一道题啊(可能是因为卡了n久终于做出来了 题意就是给你一棵带点权的有根树,sum( ...

  6. 详细介绍php中的命名空间

    php命名空间的一个最明确的作用是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.上一章节介绍了什么是php命名空间.php官网已很明确的进行了定义并形象化解释,这 ...

  7. How to use data analysis for machine learning (example, part 1)

    In my last article, I stated that for practitioners (as opposed to theorists), the real prerequisite ...

  8. mysql 数据库优化要点

    1尽可能使用更小的类型 2尽可能的定义字段为not null,除非这个字段需要设置成null 3如果没有可变长度的字段varchar,尽可使用char 4所有字段应该有默认值 5所有的数据应该在保存之 ...

  9. 导入java项目时出现红色叹号问题的解决

    问题:导入java项目时出现红色叹号(如下图所示) 原因:引入项目的某些jar包跟自己电脑上的位置不一样: 解决方案:步骤如下 (1)右键红色叹号所在项目————>build path————& ...

  10. python爬虫从入门到放弃(九)之 实例爬取上海高级人民法院网开庭公告数据

    通过前面的文章已经学习了基本的爬虫知识,通过这个例子进行一下练习,毕竟前面文章的知识点只是一个 一个单独的散知识点,需要通过实际的例子进行融合 分析网站 其实爬虫最重要的是前面的分析网站,只有对要爬取 ...