从entity framework5升级到6
将我们的项目从使用entity framework5升级到entity framework6(尽pipeNuGets更新函数)后,我在我生成的实体类上得到以下错误:
错误1名称空间“System.Data”中不存在types或名称空间名称“对象”
(你是否缺less程序集引用?)
我知道这是因为命名空间已经改变,我可以通过改变我的导入来手动修复错误: using System.Data.Objects;
并using System.Data.Objects.DataClasses;
要: using System.Data.Entity.Core.Objects;
然而,该文件生成,所以我需要重新应用此修复程序后, Update model from Database
每个Update model from Database
。 有没有什么额外的改变,让EF生成没有这个错误的模型。
我认为你的问题是,你的T4模板,它产生的权利和上下文仍然在EF版本5。
首先,您必须删除模型后面的代码生成项目,即<Modelname>.Context.tt
和<Modelname>.tt
添加一个新的EF版本6代码生成器, Right click in the model designer-> Add Code Generation Item ... -> EF 6.x DbContext Generator
。
这是我如何成功升级Entity Framework v5到v6的经验:
- SQL Server。
- C#和Visual Studio 2012。
- 数据库第一。
缩略语:
- EF5 =entity frameworkv5。
- EF6 =entity frameworkv6。
清单:
- EF5内置于.NET 4.5的核心,而EF6已经被移出,并且是开源的。
- 这意味着您必须将新的EF6组件添加到解决scheme中的所有相关项目中,尤其是入口项目。
- 这意味着您必须从所有项目中删除程序集System.Entity ,因为这涉及到EF5。
- EF5有一个.dll“EntityFramework.dll”,而EF6有两个.dll:
- 的EntityFramework
- EntityFramework.SqlServer
- EF6需要更改到app.config。 进行这些更改的最佳方法是右键单击解决scheme,select“为解决schemepipe理NuGet包”,search“EntityFramework”并将Entity Framework的v6.1.0安装到所有相关项目中,特别是入口项目。 确保从所有项目中卸载EF5 Framework的任何NuGet包。 这会自动更新你的app.config文件,所以他们是正确的。
- 检查所有的app.config文件,以引用EF5,并删除它们。
- 命名空间已经改变:
-
using System.Data.EntityClient;
删除C#行using System.Data.EntityClient;
,这是一个EF5参考。 -
using System.Data.Entity.Core.EntityClient;
添加C#行using System.Data.Entity.Core.EntityClient;
这对于EF6是正确的。
-
仍然卡住? 这个清单是一个社区维基,随时编辑这个清单,以帮助其他倒霉的灵魂仍然撞在可以是EF6configuration的砖墙。
更新2016-02-15
在考虑EF之前请探索其他选项。 它的速度比其他选项慢100倍,对于它所提供的内容来说,它是非常复杂的,实体GUI充满了错误,并且存在奇怪的可用性问题,我们将不得不撕掉所有的EF6代码,并将其replace为不到5分钟就可以在Dapper中做5秒的查询。