数据库优先 + EF + POCO;T4 代码生成

本文关键字:T4 代码生成 POCO EF 数据库 | 更新日期: 2023-09-27 18:26:08

我使用的是数据库优先方法,使用实体框架,我刚刚阅读了这篇关于 EF 中POCO的文章。现在:如何直接从数据库生成 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 + POCO;T4 代码生成

只要您使用的是 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

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

希望这符合您的需求:)。我不确定是否在您指定的命名空间和项目中创建它。这听起来更像是代码优先(您可能能够做到这一点并完美地连接到数据库?(,但您可能可以根据自己的心血来潮弯曲生成项。不过,这应该是朝着正确方向的推动。

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

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

是否有

一种"简单"的方法可以使用 T4 模板完成此操作,或者是否有其他工具可用于执行此操作?

是,实体接口生成器

https://entityinterfacegenerator.codeplex.com

此项目包含自定义的 T4 模板,这些模板可以为 DbContext 类和实体类生成接口和属性。