将EF 4 EDMX升级到EF 6

我的应用程序是在EF 4中使用数据库第一个EDMX。我想升级一切到EF 6.在获得与NuGet的EF 6之后,我不得不对我的EF模型,我的类进行了很多更改,因为名称空间然后我意识到,由我的EDMX生成的代码也使用错误的名称空间等等。到目前为止,我没有使用自定义的T4。

我如何将现有的EDMX升级到EF 6。

谢谢。

  1. 您删除旧的.tt文件
  2. 你可以在devise器模式下打开你的edmx文件(这样你可以看到你的模型)
  3. 右键点击一个空闲的空间
  4. select添加代码生成项目
  5. 在对话框中select“EF 6.x DbContext代码生成项目”(如下所示)
  6. 保存你的edmx,所有的类都将为你生成,并带有新的命名空间等等

除Rand Rand和Dean Oliver在这里给出的答案之外,还要提到下面的MSDN链接 ,描述升级到EF6的一般步骤 不要低估所需的手动步骤…

路线图是(详见上面的链接):

  1. 准备工作: 为Visual Studio 2012/13安装entity framework6工具

  2. 安装EF6 NuGet软件包

  3. 确保删除了对System.Data.Entity.dll的程序集引用 (注意:安装EF6 NuGet程序包应自动从您的项目中删除对您的项目的任何对System.Data.Entity的引用)。

  4. 交换任何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 ”)文件。
  5. 更新正在使用的任何核心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
      注意:这个类已经改名了; 一个老名字的类仍然存在和工作,但它现在被标记为过时。
    • 空间类(例如DbGeographyDbGeometry )已经从中移出
      System.Data.Spatial => System.Data.Entity.Spatial

注意:

  • 有关可用EF模板的更多信息可以在MSDN上find。

  • 如果你升级到EF6.x后得到一个过时的属性警告 ,看看这篇文章: 如何摆脱过时的属性警告?

以及兰德随机提出的步骤。 如果您使用的是VS2012,请记住安装适用于Visual Studio 2012的entity framework6工具。 在这里下载

这将确保在单击第4步:添加代码生成项目时显示EF 6.x DbContext生成器模板