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

C# 数据库优先+;EF+;POCO;T4代码生成?,c#,entity-framework,poco,t4,C#,Entity Framework,Poco,T4,我使用DB优先的方法,使用实体框架,我刚刚读了这篇文章。现在:如何直接从数据库生成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;

我使用DB优先的方法,使用实体框架,我刚刚读了这篇文章。现在:如何直接从数据库生成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
    ,每个表都有字段、属性getter和creation
  • 创建
    POCO
    实体,最好是在另一个项目中创建,所有属性映射包括关系,属性标记为虚拟以启用代理,显然是在我选择的命名空间中

是否有一种“简单”的方法可以使用T4模板实现这一点,或者是否有其他工具可以实现这一点?也许是某种
自定义工具
而不是EF附带的工具,但这是面向
POCO
的?

只要您使用EF 4.1,那么生成POCO对象是“内置的”。请参阅本文:

这只不过是一条追溯到更古老、更冗长的道路的小猪

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

希望这能满足您的需要:)。我不确定是否在指定的命名空间和项目中创建它。这听起来更像是先编写代码(您可能能够做到这一点并将其完美地连接到数据库?),但您可能能够根据自己的突发奇想调整生成项。不过,这应该是朝着正确的方向推进

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

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

是否有一种“简单”的方法可以使用T4模板实现这一点,或者是否有其他工具可以实现这一点

是,实体接口生成器


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

您使用的是什么版本的EF?如果是EF4,那么您需要获得一个也具有POCO T4的扩展。如果是4.1+,那么这大部分是内置的。我相信
4.1
,我在哪里可以检查这个;这到底是如何“内置”的?如果您想控制生成的内容,这里演示了一种方法: