2012-03-01 152 views
3

我正在使用数据库第一种方法,使用实体框架,我刚刚阅读了关于POCO In EF的这篇文章。现在:如何直接从数据库生成POCO模板?数据库优先+ EF + POCO; T4代码生成?

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; } 
    } 
} 

其实我也很喜欢到能产生我手动生成同样的东西,只需一个步骤:

  • 为每个表添加ObjectSetObjectContext,每它是领域,财产获得者和创造。
  • 创建POCO最好在另一个项目中创建POCO实体,将所有属性映射包括关系,将属性标记为虚拟以启用代理,显然在我选择的名称空间中。

有没有一种“简单”的方式来完成这个使用T4模板,或者是否有一些其他工具可以做到这一点?也许某种Custom Tool而不是EF自带的那种,但是这是以POCO为导向的?

+0

您使用的是什么版本的EF?如果EF4,那么你将需要得到一个也有POCO T4的扩展。如果4.1+,那么这大部分是内置的。 – 2012-03-01 02:52:41

+0

我相信'4.1',我可以在哪里查看;这是如何“内置”的? – bevacqua 2012-03-01 02:56:39

+0

如果您想要控制生成的内容,请执行以下操作:http://stackoverflow.com/a/8107292/418488 – FuleSnabel 2012-03-01 12:03:30

回答

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(你可能能够完成并完美地连接到数据库?),但是你也许可以弯曲生成项目到你的奇想。这应该是在正确的方向一推,虽然

0

创建POCO实体,preferrably在另一个项目中,所有的属性映射,包括关系,与特性标记为虚,使代理,显然在命名空间我选择。

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

有没有一种“简单”的方式来完成这个使用T4模板,还是有一些其他工具可以做到这一点?

是,实体接口生成

https://entityinterfacegenerator.codeplex.com

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