从实体框架5升级到6

Ros*_*lle 40 c# entity-framework ef-database-first entity-framework-5 entity-framework-6

在将项目从使用Entity Framework 5升级到Entity Framework 6之后(虽然NuGets更新功能)我在生成的Entities类上收到以下错误:

错误1命名空间"System.Data"中不存在类型或命名空间名称"Objects"
(您是否缺少程序集引用?)

我知道这是因为命名空间已经改变,我可以通过更改我的导入来手动修复错误: using System.Data.Objects;using System.Data.Objects.DataClasses; To: using System.Data.Entity.Core.Objects;

但是生成文件所以我需要在每次之后重新应用此修复程序Update model from Database.有没有额外的东西可以让EF生成没有这个错误的模型.

boi*_*iil 62

我认为您的问题是,生成权利和上下文的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.

  • 这也适用于我,但在安装VS2012的工具之前,我没有EF 6.x DbContext Generator对象.从以下网站获取它们:microsoft.com/en-us/download/details.aspx?id = 40762 (3认同)

Con*_*ngo 37

这是我如何成功将Entity Framework v5升级到v6的经验:

  • SQL Server.
  • C#和Visual Studio 2012.
  • 数据库第一.

缩略语:

  • EF5 =实体框架v5.
  • EF6 =实体框架v6.

清单:

  1. EF5内置于.NET 4.5的核心,而EF6已经被移出,并且是开源的.
    • 这意味着您必须将新的EF6程序集添加到解决方案中的所有相关项目,尤其是入口项目.
    • 这意味着您必须从所有项目中删除程序集System.Entity,因为这是指EF5.
  2. EF5有一个.dll"EntityFramework.dll",而EF6有两个.dll:
    • 的EntityFramework
    • EntityFramework.SqlServer
  3. EF6需要更改app.config.进行这些更改的最佳方法是右键单击解决方案,选择"管理解决方案的NuGet包",搜索"EntityFramework"并将实体框架的v6.1.0安装到所有相关项目中,特别是入口项目.确保从所有项目中卸载EF5 Framework的任何NuGet包.这将自动更新您的app.config文件,使其正确无误.
  4. 检查所有app.config文件以获取对EF5的引用,并将其删除.
  5. 命名空间已更改:
    • 删除C#行using System.Data.EntityClient;,这是EF5参考.
    • 添加using System.Data.Entity.Core.EntityClient;适用于EF6的C#行.

仍然卡住?这个清单是一个社区维基,随时可以编辑这个清单,以帮助其他倒霉的灵魂,他们还在敲打可能是EF6配置的砖墙.

更新2016-02-15

在考虑EF之前,请先了解其他选择.它比其他选项慢100倍,它提供的内容非常复杂,实体GUI充满了错误并且具有奇怪的可用性问题,我们将不得不撕掉所有的EF6代码并将其替换为需要的东西.在Dapper中进行5秒钟的查询不到5分钟.