将EF 4 EDMX升级到EF 6
我的应用程序是在EF 4中使用数据库第一个EDMX。我想升级一切到EF 6.在获得与NuGet的EF 6之后,我不得不对我的EF模型,我的类进行了很多更改,因为名称空间然后我意识到,由我的EDMX生成的代码也使用错误的名称空间等等。到目前为止,我没有使用自定义的T4。
我如何将现有的EDMX升级到EF 6。
谢谢。
- 您删除旧的.tt文件
- 你可以在devise器模式下打开你的edmx文件(这样你可以看到你的模型)
- 右键点击一个空闲的空间
- select添加代码生成项目
- 在对话框中select“EF 6.x DbContext代码生成项目”(如下所示)
- 保存你的edmx,所有的类都将为你生成,并带有新的命名空间等等
除Rand Rand和Dean Oliver在这里给出的答案之外,还要提到下面的MSDN链接 ,描述升级到EF6的一般步骤。 不要低估所需的手动步骤…
路线图是(详见上面的链接):
-
准备工作: 为Visual Studio 2012/13安装entity framework6工具
-
安装EF6 NuGet软件包
-
确保删除了对System.Data.Entity.dll的程序集引用 (注意:安装EF6 NuGet程序包应自动从您的项目中删除对您的项目的任何对System.Data.Entity的引用)。
-
交换任何EF Designer(EDMX)模型以使用EF 6.x代码生成 。
笔记:
- 如果您收到消息“实体数据模型devise器无法显示您请求的文件”,然后单击显示的文本消息“实体数据模型devise器中的链接修改 …您可以修改 … “,这将显示表格。 用Ctrl + Aselect全部,然后按Del ,然后右键单击并select“从数据库更新模型”,最后使用Ctrl + S保存。 这将使用默认的T4模板“EF 6.x DbContext Generator”将模型更新到最新版本。
- 如果您在项目中使用了
ObjectContext
,那么您应该考虑下载模板“EF 6.x EntityObject Generator” 。 然后在模型devise器中右键单击,select“添加代码生成项目”,然后select一个尚未使用的名称。 它将生成正确的类,之后您必须删除所有旧的(“*.tt
”)文件和相关的生成类(“*.cs
”)文件。
-
更新正在使用的任何核心EFtypes的 名称空间 ,即
-
System.Data.*
任何types都将移至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
-
注意:
-
有关可用EF模板的更多信息可以在MSDN上find。
-
如果你升级到EF6.x后得到一个过时的属性警告 ,看看这篇文章: 如何摆脱过时的属性警告?
以及兰德随机提出的步骤。 如果您使用的是VS2012,请记住安装适用于Visual Studio 2012的entity framework6工具。 在这里下载
这将确保在单击第4步:添加代码生成项目时显示EF 6.x DbContext生成器模板
- entity framework.Remove()与.DeleteObject()
- EF4 Code First:如何在不添加导航属性的情况下添加关系
- 检查是否有任何未决的更改要保存
- entity framework中的SqlException – 不允许新的事务,因为会话中还有其他线程正在运行
- entity framework – 包含多级属性
- 添加一个没有App.Config的DbProviderFactory
- entity framework:如何禁用特定查询的延迟加载?
- entity framework代码的SQL Server Express连接string首先
- DbEntityValidationException – 如何轻松地告诉造成错误的原因?