首页 > 代码库 > EF 6.0使用小计
EF 6.0使用小计
---恢复内容开始---
最近尝试了下EF Extended,但是居然需要EF6.0以上,没办法,只能安装了,打开解决方案,选择库程序包管理下的程序包管理控制台(或者直接右击你需要使用扩展的解决方案选管理NuGet程序包),也不废话了,直接装上。
使用简单的三层结果,在DAL层装上了extended扩展,点开引用一看,好家伙,引入了三个dll,一个是EntityFramework,一个EntityFramework.Extended,一个是EntityFramework.SqlServer,没弄明白他为啥需要引入.SqlServer?
用EF PowerTools工具生成了Model,在web层处理好了config,如下
1 <configSections> 2 <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 3 </configSections> 4 5 <entityFramework> 6 <contexts> 7 <context disableDatabaseInitialization="true" type="Hwapu.CTB.DAL.CTBContext"> 8 </context> 9 </contexts>10 <providers>11 <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />12 </providers>13 </entityFramework>
开始处理批量更新了,随便写了一个
using (CTBContext db = new CTBContext()){ //var topicList = db.TUserWrongTopics.Where(r => r.TopicId == topicId); //int state = db.TUserWrongTopics.Update(topicList, u => new TUserWrongTopic { IsDelete = 1 });//Method 1 Obsolete //int state = db.TUserWrongTopics.Update(q => q.TopicId == topicId, q => new TUserWrongTopic { IsDelete = 1 });//Method 2 Obsolete int state = db.TUserWrongTopics.Where(r => r.TopicId == topicId).Update(r => new Model.TUserWrongTopic { IsDelete = 1 }); return state;}
最后执行的时候居然报错,在实例化Context的时候居然说没有找到注册需要的ADO.NET 的SqlClient,奇怪,后面找了相关资料,发现需要在web层重新引用一下EntityFramework.SqlServer,奇怪,不知道这是VS的bug还是什么,在DAL层不是应用了吗,还需要重新引用一次?
后面用自己的dll测试了一下,发现无论在哪个地方调用。都能够正常,不需要在web层重新引入,奇怪的问题。难道EF6不再加入.net framework之后就必须在调用的地方引入SqlServer?在5.0时是不需要引入Sql,升级之后EF添加了对Oracle,mySql,DB2之后必须要声明对数据库的调用的引用。
---恢复内容结束---
EF 6.0使用小计
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。