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

时间:2012-03-01 02:47:17

标签: c# entity-framework poco t4

我正在使用数据库第一种方法,使用实体框架,我刚刚阅读了有关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面向的?

2 个答案:

答案 0 :(得分:2)

只要您使用的是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(你可以做到并完美地连接到数据库?),但你可能能够将生成项目弯曲到你的心血来潮。这应该是朝着正确的方向发展,不过

答案 1 :(得分:0)

  

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

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

  

是否有简单的"使用T4模板完成此任务的方法,还是有其他工具可以做到这一点?

是,实体接口生成器

https://entityinterfacegenerator.codeplex.com

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