异常描述

  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. [刷题]算法竞赛入门经典(第2版) 5-11/UVa12504 - Updating a Dictionary

    题意:对比新老字典的区别:内容多了.少了还是修改了. 代码:(Accepted,0.000s) //UVa12504 - Updating a Dictionary //#define _XieNao ...

  2. struts2总体介绍

    这篇博客开始将总结一下有关框架的知识,在开发中合适的利用框架会使我们的开发效率大大提高.当今比较流行的开源框架: 关注数据流程的MVC框架 (Struts1/2, WebWork, Spring MV ...

  3. ZooKeeper实践:(2)集群管理

    前言: 随着业务的扩大,用户的增多,访问量的增加,单机模式已经不能支撑,从而出现了从单机模式->垂直应用模式->集群模式,集群模式诞生了,伴随着一堆问题也油然而生,Master怎么选举,机 ...

  4. php 使用composer

    之前写过相关的composer,之后碰到了几个朋友问我,我整理了一下,方便自己也方便大家日后查阅~~不玩开源的程序员不是好厨子     1.执行在线安装         curl -sS https: ...

  5. ES6入门2

    for-of循环: 新语法如下: for (var value of myArray) { console.log(value); } 它的优点是: 这是目前遍历数组最简洁和直接的语法: 它避免了fo ...

  6. /usr/bin/python^M: 解释器错误: 没有那个文件或目录

    遇见问题 因为linux在虚拟机中,所以就在本地敲python代码,敲完后再拿到虚拟机去执行,再输入./filename.py时,就遇到这样的一个问题: bash: ./filename.py: /u ...

  7. SCAU Individual Contest #1

    总结一下就是自己太弱.每次打比赛遇到比较难题就喜欢瞎开题,结果都是每题想一下,然后就是结束了. A:题意让你用小写字母构造一个总共有K个的回文串,比如aba的话就是{a}{b}{a}{aba}四个,比 ...

  8. Android Weekly Notes Issue #258

    Android Weekly Issue #258 May 21st, 2017 Android Weekly Issue #258 本期内容: 围绕着Google I/O的热潮, 本周的posts除 ...

  9. css reset的重置作用(可取还是不可取,取决于你)

    一.重置的理由 当今流行的浏览器中,有些都是以自己的方式去理解css规范,这就会到只有的浏览器对css的解释与设计师的css定义初衷相冲突,使得网页的样子在某些浏览器下能正确按照设计师的想法显示.,但 ...

  10. hdu_A Walk Through the Forest ——迪杰特斯拉+dfs

    A Walk Through the Forest Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/ ...