【问题标题】:Entity Framework 7 and EDMX manipulation to auto-generate custom code实体框架 7 和 EDMX 操作以自动生成自定义代码
【发布时间】:2016-02-03 06:11:41
【问题描述】:

我目前使用 EF6 并使用模型优先方法。据我了解,EF7 将不再使用 EDMX,而是采用更加代码优先的方法。现在我知道如果需要的话,我仍然可以从我的数据库逆向工程到类中。

但我不确定的一件事是,我目前对 EF6 所做的任何操作都将在 EF7 中得到支持。

目前,我编写 T4 模板,通过 EDMX 读取,获取实体,并基于它们创建新类。例如,我为每个具有深层克隆方法的实体创建部分类。我还基于实体创建存储库类,并创建通过主键查找的方法,基于每个类中的哪些属性已被标识为主键。

如果我丢失了 EDMX,这是否意味着我需要重新手动创建这些?还是有别的办法?

【问题讨论】:

  • 我现在很难将一小段代码移植到 EF7。我希望 MS 中的某个人将 EDMX 开源。因为企业界的那些 DBA 不会同意代码优先的方法。至少在可预见的未来不会!

标签: entity-framework t4


【解决方案1】:

如果您想继续使用 T4 模板,您可以切换到类似 CodeFirst -> ReverseEngineer 的方法。

您在代码中更新模型,生成新迁移,在数据库上对其进行测试,然后使用逆向工程师代码优先方法 (http://msdn.microsoft.com/en-US/en-en/data/jj593170.aspx) 生成其他所有内容。理论上可以自动化。

在我的团队中,我们手动执行此操作,但我们不需要迁移,只需要代码优先上下文和许多其他东西,T4 可以很好地生成。

【讨论】:

  • 所以基本上 t4 模板会操作数据库而不是 EDMX?
  • 仍然是 EDMX,但不会存储在任何地方。 ReverseEngineer 工具即时创建它。
  • 我需要试一试。这对我通常对 EDMX 所做的更改有何影响?即用于将某些表的 Id 列更改为枚举列。
  • @eyeballpaul 你在这方面做过什么吗?我正要问同样的问题。在没有 edmx 文件的 EF7 的情况下如何生成代码的任何更新?
  • @Riapp 不抱歉,我已将 EF7 放在次要位置,直到它与 asp.net 5 一起完成更多功能。
【解决方案2】:

是的,您仍然可以在 Code First 中使用 T4 模板,我们导航实体类而不是 EDMX 模型。

我最近一直在看 VS2015,在 T4 和 asp.net 5 及相关项目方面遇到了一些问题(FileManager 因多个文件输出而挂起,您将需要最新版本的 Visual Studio,目前是 Update 1)

【讨论】:

    猜你喜欢
    • 2015-11-24
    • 2011-07-10
    • 2017-11-14
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多