使用T4模板与EF4.1简化的API Model First方法从模型生成POCO类

时间:2011-03-23 19:13:26

标签: .net asp.net-mvc entity-framework poco entity-framework-4.1

我有使用视觉设计师创建的模型。现在我希望从中生成POCO类。在我的另一个问题中,向我建议了EF4.1简化的API Model First方法。之前我还在考虑T4模板。

与使用T4模板生成POCO类相比,EF4.1简化API模型的限制是什么? EF4.1方法的优点是什么(除了它应该更简单易用)?我现在的决定将很难撤消,因为我将拥有相当庞大的持久层,因此将来可能很难对其进行更改。

特别是,我对这个功能感兴趣:

  • 我可以在每次更改模型时(在可视化设计器中)获得这两个选项中的任何一个来生成数据库表,这样我就不必生成查询并运行它们了吗?这将大大加快我的开发过程(出于某种原因,每次我更改模型时我都必须手动删除表,因此需要花费很多时间)。我知道这可以用
  • 完成
  • 我可以在另一个项目中拥有POCO课程吗?我知道这可以使用T4模板,但是它也可以使用简化的API吗?
  • 生成的POCO类中的属性是否可以注释,而不是每次从模型重新生成时都被覆盖? (这确实可以通过代码优先方法实现)
  • 效率有什么不同吗?

如果重要,任何选择的技术都将用于ASP.NET MVC应用程序。


修改 如果您知道答案,请回答我的问题的任何问题。也许与另一个部分答案一起,它将给我我需要的信息。谢谢

1 个答案:

答案 0 :(得分:4)

EF 4.1提供了简化的API,因为首次在EF中提供了代码优先方法。你所描述的是模型的第一种方法。

我已answered similar question但我会尝试回答您的个别问题:

  • DbContext API的主要限制是缺乏信息。我们知道新功能,但我们仍然不知道如何实现ObjectContext API中的一些功能(简化可能删除了一些功能)。我不确定这与模型第一次使用DbContext生成器T4模板有什么关系,因为在这种情况下,映射仍然在EDMX文件中定义,所以应该克服代码第一映射的一些众所周知的问题。
  • 使用DbContext API生成数据库自动工作。默认情况下,ObjectContext API仅提供db脚本生成,您必须执行该脚本。另一方面,如果您拥有VS 2010 Premium或Ultimate,则可以下载Entity designer database generation power pack,这样您就可以逐步构建数据库,而无需每次都删除它。这是DbContext API目前无法实现的。
  • 您可以在包含这两个API的其他项目中使用POCO类(模板)。
  • 是的,即使使用T4模板生成POCO类you can use annotations
  • 效率没有差别。 DbContext API只是ObjectContext API之上的包装。