【问题标题】:Upgrade EF 4 EDMX to EF 6将 EF 4 EDMX 升级到 EF 6
【发布时间】:2013-10-30 01:50:02
【问题描述】:

我的应用程序在 EF 4 中首先使用数据库 EDMX。我想将所有内容升级到 EF 6。在使用 NuGet 获得 EF 6 后,我不得不对使用我的 EF 模型的类进行大量更改,因为EF 6 中的命名空间已更改。然后我意识到,我的 EDMX 生成的代码也使用了错误的命名空间等。到目前为止,我没有使用自定义 T4。

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

谢谢。

【问题讨论】:

    标签: entity-framework entity-framework-4 entity-framework-6


    【解决方案1】:
    1. 您删除了旧的 .tt 文件
    2. 您在设计器模式下打开您的 edmx 文件(这样您就可以看到您的模型)
    3. 右键单击空闲空间
    4. 选择添加代码生成项
    5. 在对话框中选择“EF 6.x DbContext Code Generation Item”(类似这样)
    6. 保存您的 edmx,将为您生成所有类,包括新的命名空间等等

    【讨论】:

    • 您需要重命名或移动您已经创建的任何部分类。我的偏好是重命名文件,例如从 Person.cs 到 Person.partial.cs。
    【解决方案2】:

    除了 Rand Random 和 Dean Oliver 在这里给出的答案之外,让我提一下以下MSDN link,描述了升级到 EF6 的一般步骤。不要低估所需的手动步骤。 ..

    路线图是(请参阅上面给出的链接中的详细信息):

    1. 准备工作:安装Entity Framework 6 Tools for Visual Studio 2012/13

    2. 安装 EF6 NuGet 包

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

    4. 交换任何 EF Designer (EDMX) 模型以使用 EF 6.x 代码生成

      注意事项:

      • 如果您之后收到消息“实体数据模型设计器无法显示您请求的文件”,请单击显示的文本消息“实体数据模型”中的链接修改 Designer ...您可以修改 ...”,这将显示表格。用Ctrl+A全选,然后按Del,然后右击选择“Update model from database”,最后用Ctrl+S。这将使用默认的 T4 模板“EF 6.x DbContext Generator”将模型更新到最新版本。

      • 如果您在项目中使用过ObjectContext,那么您应该考虑下载模板"EF 6.x EntityObject Generator"。然后在模型设计器中右击,选择“添加代码生成项”,然后选择一个你还没用过的名字。它将生成正确的类,之后您必须删除所有旧的 ("*.tt") 文件和相关生成的类 ("*.cs") 文件。

    5. 更新命名空间,为正在使用的任何核心 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.
        注意:这个类已经改名了;旧名称的类仍然存在并且有效,但现在被标记为已过时。
      • 空间类(例如DbGeographyDbGeometry)已从
        System.Data.Spatial => System.Data.Entity.Spatial 移动

    注意:

    【讨论】:

      【解决方案3】:

      以及 Rand Random 建议的步骤。如果您使用的是 VS2012,请记住为 Visual Studio 2012 安装 Entity Framework 6 Tools。 download here

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

      【讨论】:

        猜你喜欢
        • 2012-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多