【问题标题】:Entity Framework 4.3.1 to 6 EDMX (ObjectContext)实体框架 4.3.1 到 6 EDMX (ObjectContext)
【发布时间】:2013-11-26 10:53:07
【问题描述】:

我正在尝试将项目从 EF 4.3.1 升级到 EF 6.0

模板使用ObjectContext,现在,每当我更改模板时,它都会使用旧的 EF 4.3.1 命名空间覆盖 *.Designer.cs 文件中生成的代码,因此构建中断。

有什么办法可以阻止这种情况发生吗?我看不到要破解的 *.tt 文件。重新生成 EDMX 并不是一个真正的选择,因为已经对概念模型进行了重要的定制(我会在这几天!)。

我尝试创建一个新的 EDMX 作为测试,但也出现了同样的问题。一旦我将 ObjectContext 使用的代码生成更改为“默认”,EDMXName.Designer.cs 文件就会使用旧命名空间编写。

using System;
using System.ComponentModel;
using System.Data.EntityClient;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
using System.Linq;
using System.Runtime.Serialization;
using System.Xml.Serialization;

这让我分心 - 我想我将不得不将其降低到 EF 5.0

【问题讨论】:

    标签: c# .net entity-framework nuget edmx


    【解决方案1】:

    我已经解决了这个问题。这是因为您已从 EF 5.X 升级到 EF 6.X,您的 edmx 仍采用旧的遗留生成策略。

    你需要什么:

    安装其中一个扩展程序后,您希望备份 edmx 和设计器文件(或使用源代码管理)。重新启动 Visual Studio。

    重新启动 Visual Studio 后,您想进入您的项目并:

    1. 进入图表设计界面
    2. 右键选择“添加代码生成项”
    3. 选择“EF 6.X Entity Object Generator”并将其命名为“Template.tt”之类的适当名称
    4. 让生成发生
    5. 回到设计界面并确保代码生成策略现在是T4
    6. 删除旧版 EF 5.X 创建的设计器文件

    这将为您提供您的 ObjectContext 派生上下文以及与较新的 EF 6.0 命名空间匹配的所有内容。

    【讨论】:

    • 感谢 Jeremy - 现在大部分情况下这都是一种享受。我真的不明白为什么升级过程不能为你处理这个问题。 叹息
    • 是的,我花了 2 个小时试图让它工作。这很麻烦,但很高兴现在其他人可以跟随。
    • 您也需要更改一些命名空间,请参阅类似问题:Upgrade EF4 EDMX to EF6
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    相关资源
    最近更新 更多