EF遇到的一些问题
环境:EntityFramework 版本号:4.1.0.0
问题一:“数据读取器与指定的“。。。.。。。”不兼容。某个类型为“。。。”的成员在同名的数据读取器中没有对应的列。”。
使用方式:rep.context.Database.SqlQuery<T>(sql, pList.ToArray<object>()); //sql 是直接字符串拼接的
问题原因:T 是个视图,因为数据库中的字段是有前缀"C_",而生产实体的时候 我们做了去前缀的操作。导致 字段对应不上。
解决方案:在拼写sql 字符串的时候 把有前缀的字段 起个别名去掉前缀。如: C_DISP_TYPE_NM as DISP_TYPE_NM。
问题二:“V_CLAIM_DISPATCH 的“MAIN_STAT”属性不能设置为“Int64”值。必须将该属性设置为类型为“Int32”的非 null 值”
使用方式:var surveyList = claimBiz.FindAll<V_CLAIM_DISPATCH>(sqlText, pList);
问题原因:【不明】猜想可能原因是,数据库是number(10),生成的实体是int。而实际读出来的数据要对应int64。但那个字段类型的映射是EF自动完成的,不能人为修改。所以报错。
解决方案:重新写个类V_CLAIM_DISPATCH_COPY 标志字段 Nullable<Int64> MAIN_STAT。上面的使用方式 var surveyList = claimBiz.FindAll<V_CLAIM_DISPATCH_COPY >(sqlText, pList); 把泛型改成自定义类。
问题三:多对多 新增数据时 对应关系表也会增加一条数据。
例如:科目表 有语文 数学,我新增一条学员信息 对应科目语文。更新成功后科目表 也会重新新增一条”语文“的信息。
问题原因:在添加 学员信息时 查询的科目 语句用到了 AsNoTracking (即 不被实体被EF context追踪,查询出来的实体不能直接用于更新和删除,否则报错)。参考资料 1 2 3
解决方案:在查询科目 的时候 把 AsNoTracking 这个方法去掉。[然后有出现了 问题四 ]
问题四:一个实体对象不能由多个 IEntityChangeTracker 实例引用
问题原因:在添加Add 实体时 在实体的 导航属性添加了 关系实体。 查询资料:1
(
如: var modelMyBlogs = new Model.MyBlogs(){};
modelMyBlogs.BlogTags.Add(itemBlogTag);
blog.Add(modelMyBlogs);
itemBlogTag 是由重新实例DbContext查询出来的。
)
解决方案:直接吧DbContext放到session里面或者进程内公用。(我是直接放session里)
问题五:查询异常的慢。
可能原因:
1.数据量大 筛选条件没有 EntityFunctions.AsNonUnicode http://www.cnblogs.com/zhaopei/p/4431461.html
2.如果查询出来的结果集不用更新和修改 可以 在后面加 AsNoTracking 方法(不被实体EF context追踪)
EF遇到的一些问题的更多相关文章
- %E3%80%90%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E3%80%91
"%3Cdiv%20class%3D%22htmledit_views%22%20id%3D%22content_views%22%3E%0A%20%20%20%20%20%20%20%20 ...
- 你必须知道的EF知识和经验
注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...
- 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)
前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...
- EntityFramework之DetectChanges's Secrets(三)(我为EF正名)
前言 对于应用程序开发者来说,通常不需要考虑太多对于Entity Framework中的变更追踪(change tracking),但是变更追踪和DetectChanges方法是栈的一部分,在这其中, ...
- ASP.NET从零开始学习EF的增删改查
ASP.NET从零开始学习EF的增删改查 最近辞职了,但是离真正的离职还有一段时间,趁着这段空档期,总想着写些东西,想来想去,也不是很明确到底想写个啥,但是闲着也是够 ...
- 使用EF CodeFirst 创建数据库
EntityFramework 在VS2015添加新建项时,选择数据->ADO.NET 实体数据模型,有一下选项 来自数据库的EF设计器,这个就是我们最常用的EntityFramework设计模 ...
- EF上下文对象线程内唯一性与优化
在一次请求中,即一个线程内,若是用到EF数据上下文对象,就创建一个,这也加是很多人的代码中习惯在使用上下文对象时,习惯将对象建立在using中,也是为了尽早释放上下文对象, 但是如果有一个业务逻辑调用 ...
- EF里Guid类型数据的自增长、时间戳和复杂类型的用法
通过前两章Lodging和Destination类的演示,大家肯定基本了解Code First是怎么玩的了,本章继续演示一些很实用的东西.文章的开头提示下:提供的demo为了后面演示效果,前面代码有些 ...
- 模仿EF,我们用JS开发的HTML5 SQLite 访问库
今天终于有空把demo放到了RunJS上面去.请使用google chrome观看在线演示: http://sandbox.runjs.cn/show/pekbd9zb 这个库本来是我们开发的phon ...
随机推荐
- HTML文档可以包含的内容
通过不同的标签,HTML文档可以包含不同的内容,比如文本,链接,图片,列表,表格,表单,框架等. 文本 HTML对文本的支持是最丰富的,你可以设置不同级别的标题,分段和换行,可以指定文本的语义和外观, ...
- Guava学习笔记(一)概览
Guava是谷歌开源的一套Java开发类库,以简洁的编程风格著称,提供了很多实用的工具类, 在之前的工作中应用过Collections API和Guava提供的Cache,不过对Guava没有一个系统 ...
- Visual Studio前端开发工具/扩展
怎么样让Visual Studio更好地编写HTML5, CSS3, JavaScript, jQuery,换句话说就是如何更好地做前端开发.Visual Studio 2010不管是旗舰版还是免费版 ...
- 3.4.4 数据预留和对齐(skb_reserve, skb_push, skb_put, skb_pull)
转自:http://book.51cto.com/art/201206/345043.htm <Linux内核源码剖析:TCP/IP实现>本书详细论述了Linux内核2.6.20版本中TC ...
- android的消息处理机制——Looper,Handler,Message
在开始讨论android的消息处理机制前,先来谈谈一些基本相关的术语. 通信的同步(Synchronous):指向客户端发送请求后,必须要在服务端有回应后客户端才继续发送其它的请求,所以这时所有请求将 ...
- 文件管理[Linux]
文件系统 rootfs: 根文件系统 /boot 系统启动相关的文件,如内核.initrd.以及grub(bootloader) /dev 设备文件 块设备 随机访问 字符设备 线性访问 设备号 主设 ...
- SVN使用教程之-分支/标记 合并 subeclipse (转)
首先说下为什么我们需要用到分支-合 并.比如项目demo下有两个小组,svn下有一个trunk版.由于客户需求突然变化,导致项目需要做较大改动,此时项目组决定由小组1继续完成原来正 进行到一半的工作[ ...
- IBatis.Net使用总结(四)-- IBatis 调用存储过程
IBatis 调用存储过程 http://www.cnblogs.com/jeffwongishandsome/archive/2010/01/10/1543219.html http://www.c ...
- ubuntu14 备份
备份命令 # tar cvpjf backup.tar.bz2 –exclude=/proc –exclude=/lost+found –exclude=/backup.tar.bz2 –exclud ...
- Axure RP = Axure Rapid Prototyping
不要一味追求高保真,特别是交互后产生动态数据.并且将动态数据交互传递出去,违背了做原型的初衷了. 自己做着玩追求高保真可以,有成就感. 但作为工作的话,效率优先.能简单直观地展示必要的交互效果即可.