我的应用程序在 EF 4 中首先使用数据库 EDMX。我想将所有内容升级到 EF 6。在使用 NuGet 获得 EF 6 后,我不得不对使用我的 EF 模型的类进行大量更改,因为命名空间已经在 EF 6 中进行了更改。然后我意识到,我的 EDMX 生成的代码也使用了错误的命名空间等。到目前为止,我没有使用自定义 T4。
如何将现有的 EDMX 升级到 EF 6。
谢谢你。
我的应用程序在 EF 4 中首先使用数据库 EDMX。我想将所有内容升级到 EF 6。在使用 NuGet 获得 EF 6 后,我不得不对使用我的 EF 模型的类进行大量更改,因为命名空间已经在 EF 6 中进行了更改。然后我意识到,我的 EDMX 生成的代码也使用了错误的命名空间等。到目前为止,我没有使用自定义 T4。
如何将现有的 EDMX 升级到 EF 6。
谢谢你。
除了 Rand Random 和 Dean Oliver 给出的答案之外,让我提及以下MSDN 链接,描述升级到 EF6 的一般步骤。不要低估所需的手动步骤...
路线图是(请参阅上面给出的链接中的详细信息):
准备工作:为 Visual Studio 2012/13安装实体框架 6 工具
安装EF6 NuGet 包
确保删除对 System.Data.Entity.dll 的程序集引用(注意:安装 EF6 NuGet 包应自动为您从项目中删除对 System.Data.Entity 的任何引用)。
交换任何 EF Designer (EDMX) 模型以使用 EF 6.x 代码生成。
笔记:
ObjectContext
在项目中使用过,那么您应该考虑下载模板“EF 6.x EntityObject Generator”。然后在模型设计器中右击,选择“添加代码生成项”,然后选择一个你还没用过的名字。它将生成正确的类,之后您必须删除所有旧 (" *.tt
") 文件和相关生成的类 (" *.cs
") 文件。更新正在使用的任何核心 EF 类型的命名空间,即
System.Data.*
移动到System.Data.Entity.Core.*
System.Data.EntityState
=>System.Data.Entity.EntityState
System.Data.Objects.DataClasses.EdmFunctionAttribute
=> System.Data.Entity.DbFunctionAttribute
。System.Data.Objects.EntityFunctions
=> System.Data.Entity.DbFunctions
。DbGeography
, DbGeometry
)已从System.Data.Spatial
=>移出System.Data.Entity.Spatial
注意:
可以在 MSDN上找到有关可用 EF 模板的更多信息。
如果您在升级到 EF6.x 后收到过时属性警告,请查看这篇 SO 文章:如何摆脱过时属性警告?
以及 Rand Random 建议的步骤。如果您使用的是 VS2012,请记住为 Visual Studio 2012 安装 Entity Framework 6 Tools。在这里下载
这将确保在单击第 4 步:添加代码生成项时显示EF 6.x DbContext Generator模板