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 ...
随机推荐
- 那些年,坑死自己的事之fread/fwrite
今天继续看牛人做过的东西,这个小程序并不大,加上相当多的注释行,才5000多行.这个小程序是在linux下实现的,之前自己也一直用vi来看并加以更加详细的注释,但是效率实在太低.于是将其转移到wind ...
- POCO库——Foundation组件之缓存Cache
缓存Cache:内部提供多种缓存Cache机制,并对不同机制的管理缓存策略不同实现: ValidArgs.h :ValidArgs有效键参数类,模板参数实现,_key:键,_isValid:是否有效, ...
- How GitHub Works《Github是如何工作的?》
https://github.com/blog/920-how-github-works 如果你想知道Github是如何工作的,你可以看查看Zach Holman(@holman)的三篇文章: Hou ...
- laravel5笔记
数据库表创建E:\PHP\learnlaravel5>php artisan migrate 创建modelE:\PHP\learnlaravel5>php artisan make:mo ...
- [Javascript] 前端随笔
做一个小功能时使用到的一点技术点记录下来: 1.在js中使用定时器: 这两个方法都可以用来实现在一个固定时间段之后去执行JavaScript.不过两者各有各的应用场景. 方 法 实际上,setTime ...
- DataGridView控件行标题显示序号
Rectangle rectangle = new Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, dataGridViewX1.R ...
- CozyRSS2开发记录0-win10开坑
1.回顾 距离上一篇<CozyRSS1.0 - 有可用性版本>,恰好两个月整.在初步完成CozyRSS的WPF桌面版后,按照设想的,开始搞一个手机版的CozyRSS.由于种种原因,并没有使 ...
- tcp三次握手、四次挥手
TCP的三次握手(建立连接)和四次挥手(关闭连接):http://blog.csdn.net/whuslei/article/details/6667471/ TCP协议中的三次握手和四次挥手(图解) ...
- 一场IT民工 与 人贩子 之间的战争 - 感受来自PostgreSQL的爱
标签 PostgreSQL , 图数据库 , 社会关系分析 , 流式分析 , 人贩子 , 图像识别 , 人脸识别 , 公安刑侦 , pipelinedb , stream , neo4j , plpr ...
- SQL 语句与性能之执行顺序
select * , t3.Name from t1 left join t2 on t1.sysno = t2.Asysno left join t3 on t3.sysno = t2.Bsysno ...