异常描述

  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. JAVA printWriter中write()和println()区别

    PrintWriter 的Write()方法和println()方法有何细微的区别? 最近学习JAVA网络编程,在服务器端和客户端产生一个Socket 后, 两边各自用getIputStream()和 ...

  2. vim - manual -个人笔记

    ##vim配置 ###normal > 输入命令:w 写入保存 > > 粘贴 :p(向下粘贴) P(大写向上粘贴) > > 复制 :yy 复制一行 > > 删 ...

  3. 自己编写jQuery动态引入js文件插件 (jquery.import.dynamic.script)

    这个插件主要是结合jquery或者xhr异步请求来使用的,它可以把已经引入过的js文件记录在浏览器内存中,当下次再引入相同的文件就忽略该文件的引入. 此插件不支持浏览器刷新保存数据,那需要利用cook ...

  4. cookie值的设置,获取及删除

    <script> function setCookie( key, val, expire){ var dateTime = new Date(); dateTime.setTime( d ...

  5. Jenkins 发布后自动创建git tag

    为了便于项目中对发布的版本进行回滚,所以我们每次发布完成以后自动创建git tag. 1,创建一个Jenkins任务,命名成为push_tag_demo: 2,配置<源码管理>,这里配置比 ...

  6. 使用windows桌面ftp上传文件到linux服务器

    首先在linux服务器上安装ftp [root@host2 test]#yum -y install ftp vsftpd [root@host2 test]#service vsftpd start ...

  7. js图片大小限制,设置

    //图片大小自动脚本 function AutoResizeImage(maxWidth, maxHeight, objImg) { var img = new Image(); img.src = ...

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

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

  9. 织梦dedecms列表页dede:pagelist分页问题

    pagelist是dede定义的一个分页标签.有时直接引用这个标签的时候,会出现分页标签变形问题.我在使用非默认模板的时候就遇到过两次. pagelist本身就有一些样式是在include/arc.l ...

  10. python中defaultdict的用法

    初识defaultdict 之前在使用字典的时候, 用的比较随意, 只是简单的使用dict. 然而这样在使用不存在的key的时候发生KeyError这样的一个报错, 这时候就该defaultdict登 ...