我的应用程序在EF 4中首先使用数据库EDMX。我想将所有内容升级到EF 6.使用NuGet获取EF 6后,我必须对使用我的EF模型的类进行大量更改,因为在EF 6中已经更改了名称空间。然后我意识到,我的EDMX生成的代码也使用了错误的名称空间等。到目前为止我还没有使用自定义T4。
如何将现有的EDMX升级到EF 6。
谢谢。
答案 0 :(得分:56)
答案 1 :(得分:29)
除了Rand Random和Dean Oliver给出的答案之外,让我提一下以下MSDN link,描述升级到EF6的一般步骤。不要低估手动步骤需要...
路线图(见上文给出的链接中的详细信息):
安装 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
”)文件。更新名称空间,即
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
N.B。:
可以找到有关可用EF模板的更多信息here at MSDN.
如果您在升级到EF6.x后收到过时属性警告,请查看此SO文章:How to get rid of obsolete attribute warning?
答案 2 :(得分:13)
以及Rand Random建议的步骤。如果您使用的是VS2012,请记住为Visual Studio 2012安装Entity Framework 6工具。 download here
这将确保在单击步骤4:添加代码生成项时显示 EF 6.x DbContext Generator 模板