EntityFramework.Extended.Update.Ambiguous column name
异常描述
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的更多相关文章
- EntityFramework.Extended 实现 update count+=1
在使用 EF 的时候,EntityFramework.Extended 的作用:使IQueryable<T>转换为update table set ...,这样使我们在修改实体对象的时候, ...
- 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)
前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...
- Mysql 该如何 Entity Framework 数据库迁移 和 如何更好的支持EntityFramework.Extended
问题 1.在使用EntityFramework访问Mysql的时候,使用迁移来生成数据库或者更新数据库时候会遇到一些问题 2.EntityFramework.Extended对Mysql的支持不是很完 ...
- entity framework 新手入门篇(4)-entity framework扩展之 entityframework.extended
对于EF的操作,我们已经有了大概的了解了,但对于实战来说,似乎还欠缺着一些常用的功能,那就是批量的删除,更新数据. 承接上面的部分,我们有一个叫做House的数据库,其中包含house表和seller ...
- 开发笔记:基于EntityFramework.Extended用EF实现指定字段的更新
今天在将一个项目中使用存储过程的遗留代码迁移至新的架构时,遇到了一个问题——如何用EF实现数据库中指定字段的更新(根据UserId更新Users表中的FaceUrl与AvatarUrl字段)? 原先调 ...
- EntityFramework.Extended扩展用法
EntityFramework.Extended是一个基于EntityFramework框架 IQueryable类型的扩展方法,包括Update.Delete. 它的优点就是 修改删除操作不仅仅有I ...
- EntityFramework 插件之EntityFramework.Extended (批量处理)
接手了一个用EF来做的项目,由于项目中使用的原生处理,导致很多update都是采用先select 后 update的方式来实现,同时无法批量执行逻辑如:根据订单类型统一更新状态等.所以在经过了N多查找 ...
- EntityFramework.Extended 对EF进行扩展
前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...
- 采用EntityFramework.Extended 对EF进行扩展
今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这是一个对Entity Framework进行扩展的类库 ...
随机推荐
- TP框架 命名空间 与第三方类
命名空间 相当于虚拟目录 所有类文件都放在虚拟目录 功能:实现自动加载类 TP框架的命名空间要更复杂 内容=> 命名空间中定义和使用 都用\1初始命名空间 相当于 根目录 如:Library文件 ...
- swift学习 - 单例实现(singleton)
swift中实现单例的方式 class LGConfig: NSObject { static let instance = LGConfig() private override init() { ...
- 求一个二维整数数组最大子数组之和,时间复杂度为N^2
本随笔只由于时间原因,我就只写写思想了 二维数组最大子数组之和,可以 引用 一维最大子数组之和 的思想一维最大子数组之和 的思想,在本博客上有,这里就不做多的介绍了 我们有一个最初的二维数组a[n ...
- springboot thymeleaf和shiro标签整合
这里用的是 thymeleaf 2.x版本的 添加依赖 <dependency> <groupId>com.github.theborakompanioni</group ...
- [C++][OpenGL]自己写GUI(0)——介绍
文章可转载,转载请注明出处:http://www.cnblogs.com/collectionne/p/6928612.html.文章未完,如果不在博客园(cnblogs)发现本文,请访问前面的链接查 ...
- [HDU1020] Encoding - 加密
Problem Description Given a string containing only 'A' - 'Z', we could encode it using the following ...
- GLUT Trackball Demo
GLUT Trackball Demo eryar@163.com 1.Introduction 在三维场景中建立模型后,为了方便用户从各个角度观察模型,从而需要对三维视图进行控制.常见的视图交互控制 ...
- Java经典编程题50道之五十
有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件 "stud"中. public ...
- javacpp-opencv图像处理系列:国内车辆牌照检测识别系统(万份测试车牌识别准确率99.7%以上,单次平均耗时39ms)
javaCV图像处理系列: 一.javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体.位置.大小.粗度.翻转.平滑等操作 二.javaCV图像处理之2:实时视频添 ...
- dedecms 动态tab写法
项目要求要dedecms动态添加选项卡然后自己写了一个 现在需要些tab的栏目下创建子栏目 (如果是首页需要顶级栏目) 如图我在案例下添加了3个子栏目 然后每个子栏目里面添加需要在tab里面输出的内容 ...