在没有t4代码生成器的情况下创建实体框架(如vs 2010)

时间:2016-03-14 12:11:30

标签: c# entity-framework

我想使用VS 2015创建基于数据库的实体框架模型。

有一些问题:

1)当我想创建模型时,我收到此警告:

enter image description here

2)当我创建模式时,某些文件会像T4一样生成。

enter image description here

3)生成的类没有数据注释,如:

[EdmEntityTypeAttribute(NamespaceName="SomeModel", Name="tblCode1")]
[Serializable()]
[DataContractAttribute(IsReference=true)]

4)在我们的小组中,有些人拥有VS 2013或2010,他们无法使用此类型号。

如何使用VS 2015创建模型,如VS 2010或2013而不使用T4(仅限2个文件如下)

enter image description here

2 个答案:

答案 0 :(得分:9)

简答:

您需要将Code Generation Strategy的{​​{1}}属性从“ T4 ”更改为“旧版ObjectContext ”并删除{{1来自Solution Exporer的节点。

答案很长:

以下是所需的步骤:

(1)假设您首先选择“添加 - >新项目 - > ADO.NET实体数据模型 - >数据库中的EF Designer ”。

(2)按照“实体数据模型向导”进行操作。接下来是非常重要。当您进入要求使用EF版本的屏幕时,请确保选择 EF 5.0 ,否则T4模板将是您唯一的选择:

enter image description here

(3)完成向导。对第一个屏幕截图的安全警告说好。项目结构看起来就像是你的第二个截图。

(4)打开设计器中的edmx文件。查看属性窗口,有一个名为.tt的属性,默认情况下为“ T4

enter image description here

将属性更改为“旧版ObjectContext

(5)从解决方案资源管理器中删除 YourModel.Context.tt YourMdel.tt 节点,您就完成了。

有点无聊,但做你想要的。缺点是你只能使用过时的EF版本,即将推出的EF7将退休edmx,所以可能是开始考虑转向Code First方法的好时机。但在此之前,希望上述内容有助于保持您当前的流程。

答案 1 :(得分:2)

为了生成“Code first”模型(从数据库开始获取代码优先模型),您还可以使用Code Smith Generator。您可以从POCO类模板开始(或者从NHibernate模板开始,如果需要序列化,IDataErroInfo,INotifyPropertyChanged等实现)并自定义它们非常简单(语法基于ASP)。可能还有一个免费版本。

环顾四周,我发现了一篇文章和一个从SQL Server数据库中提取POCO类的开源工具 http://www.codeproject.com/Articles/892233/POCO-Generator