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

3

我正在使用基于数据库的方法,使用Entity Framework,我刚刚阅读了这篇关于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; }
    }
}

事实上,我非常希望能够只需一步就能生成与我手动生成相同的东西:
  • 为每个表添加ObjectSetObjectContext中,每个表都有其字段、属性getter和创建。
  • 创建POCO实体,最好是在另一个项目中,包括所有属性映射,包括关系,将属性标记为虚拟以启用代理,并且显然在我选择的命名空间中。
是否有一种“简单”的方法可以使用T4模板来完成这个任务,或者是否有其他可用的工具来完成这个任务?也许有一些与EF不同但面向POCOCustom Tool

你使用的EF版本是什么?如果是EF4,则需要获取一个还具有POCO T4的扩展。如果是4.1+,则大多数功能已经内置了。 - Justin Pihony
我相信是 4.1,我在哪里可以检查这个版本号;而且这个版本号是如何“内置”的呢? - bevacqua
如果您想要控制生成的内容,一种方法是在这里演示的:http://stackoverflow.com/a/8107292/418488 - Just another metaprogrammer
2个回答

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实体,最好在另一个项目中,包括所有属性映射和关系,将属性标记为虚拟以启用代理,并且显然在我选择的命名空间中。
Entity Framework默认模板不能放置在单独的程序集中,因为它需要配置和EDMX文件。
使用T4模板有没有“简单”的方法来完成这个任务,或者有没有其他可用的工具来完成这个任务?
是的,有Entity Interface Generator。

https://entityinterfacegenerator.codeplex.com

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接