【问题标题】:Database First + EF + POCO; T4 Code Generation?数据库优先 + EF + POCO; T4 代码生成?
【发布时间】:2012-03-19 13:50:15
【问题描述】:

我使用的是数据库优先方法,使用实体框架,并且我刚刚阅读了有关POCO In EF 的这篇文章。现在:如何直接从数据库生成 POCO 模板?

namespace My.Domain
{
    public class Entity
    {
        public virtual long EntityId { get; set; }
        public virtual string Example { get; set; }
        public virtual long NextId { get; set; }
        public virtual bool Lame { get; set; }
    }
}

事实上,我非常希望能够生成与我手动生成的相同的东西,只需一步:

  • 将每个表的ObjectSet 添加到ObjectContext,每个表都有它的字段、属性获取器和创建。
  • 创建POCO 实体,最好在另一个项目中创建所有属性映射,包括关系,属性标记为虚拟以启用代理,并且显然在我选择的命名空间中。

是否有使用 T4 模板完成此任务的“简单”方法,或者是否有其他可用的工具可以做到这一点?也许是某种Custom Tool,而不是EF 自带的那种,但那是面向POCO 的?

【问题讨论】:

  • 您使用的是什么版本的 EF?如果是 EF4,那么您将需要获得一个也具有 POCO T4 的扩展程序。如果是 4.1+,那么这主要是内置的。
  • 我相信4.1,我在哪里可以查看这个;这个“内置”到底是怎么回事?
  • 如果您想控制生成的内容,这里演示了一种方法:stackoverflow.com/a/8107292/418488

标签: c# entity-framework poco t4


【解决方案1】:

只要您使用的是 EF 4.1,那么生成 POCO 对象就是“内置”的。请参考这篇文章:

http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx

这只是对旧的、更冗长的方式的捎带

http://blogs.msdn.com/b/adonet/archive/2010/01/25/walkthrough-poco-template-for-the-entity-framework.aspx

第一种方法现在更像是建议的方法,但我想我也会给你旧的方法:)

希望这符合您的需求:)。我不确定在您指定的命名空间和项目中创建它。这听起来更像是 Code First(您可能能够做到并完美地连接到数据库?),但您可能能够随心所欲地改变生成项目。不过,这应该是朝着正确方向的推动

【讨论】:

    【解决方案2】:

    创建 POCO 实体,最好在另一个项目中使用所有属性映射,包括关系,属性标记为虚拟以启用代理,并且显然在我选择的命名空间中。

    实体框架默认模板不能放在单独的程序集中,因为它需要配置和 EDMX 文件。

    是否有使用 T4 模板完成此任务的“简单”方法,或者是否有其他工具可用于执行此操作?

    是的,实体接口生成器

    https://entityinterfacegenerator.codeplex.com

    该项目包含定制的 T4 模板,可以为 DbContext 类和实体类生成接口和属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 2014-07-03
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      相关资源
      最近更新 更多