使用T4模板从模型生成POCO类 vs. EF4.1简化API模型优先方法

3
我使用可视化设计程序创建了一个模型。现在我想从它生成POCO类。在我的另一个问题中,有人向我推荐了EF4.1简化API模型优先方法。之前我也考虑过T4模板。
与使用T4模板生成POCO类相比,EF4.1简化API模型优先的限制是什么?如果有的话,EF4.1方法的优点是什么(除了它被认为更容易使用)?由于我将拥有相当庞大的持久层,所以我的决定现在很难撤消,因此这很重要。
特别是,我对以下功能感兴趣:
- 我可以得到这两个选项中的任何一个来每次更改模型(在可视化设计程序中)时生成数据库表,以便我不必生成查询并运行它们吗?这将大大加快我的开发过程(由于某种原因,我必须手动删除表,因此需要很长时间)。我知道可以使用T4模板完成此操作。 - 我可以在另一个项目中使用POCO类吗?我知道可以使用T4模板完成此操作,但简化API是否也可能? - 生成的POCO类中的属性是否可以进行注释而不会在每次从模型重新生成时被覆盖?(这确实可以通过代码优先方法实现) - 效率上有什么区别吗?
如果选择的任何技术都将在ASP.NET MVC应用程序中使用,则会产生影响。

1
我无法回答所有这些问题,所以我在这里只是放置了我的评论。EF4.1简化模型也基于T4模板,因此与EF4.0中的ObjectContext相比,EF4.1中的DBContext基于API仅公开最常用的方法。是的,您可以在另一个项目中拥有POCO类。 - J.W.
@J.W.请随意回答您能够回答的任何问题子集。也许完整的答案需要来自不同愿意帮助我的出色人才的多个部分答案。 - Rasto
1个回答

4
EF 4.1提供了简化的API,主要是因为EF首次提供了代码优先方法。您描述的是模型优先方法。
我已经回答了类似的问题,但我会尝试回答您的个别问题:
  • DbContext API的主要限制是缺乏信息。我们知道新功能,但仍然不知道如何实现ObjectContext API中可用的一些功能(简化可能删除了一些功能)。我不确定这与使用DbContext生成器T4模板的模型优先方法有何关系,因为在这种情况下,映射仍在EDMX文件中定义,因此应该克服一些关于代码优先映射的众所周知的问题。
  • 使用DbContext API自动生成数据库。ObjectContext API默认仅提供db脚本生成,您必须执行该脚本。另一方面,如果您拥有VS 2010高级版或旗舰版,则可以下载Entity designer database generation power pack,它将允许您增量构建数据库,而无需每次都删除它。这是目前使用DbContext API无法实现的。
  • 您可以在其他项目中同时使用两个API中的POCO类(模板)。
  • 是的,即使使用T4模板生成POCO类,您也可以使用注释
  • 效率上没有区别。DbContext API只是ObjectContext API的包装器。

+1 谢谢你的好回答。我越来越决定使用新的 API。还有一件事 - 我已经读到在 EF 4 中不支持唯一索引。想知道它们在 EF 4.1 中是否仍然不受支持? - Rasto
1
@drasto:EF 4.1不支持唯一键。EF 4.1基于相同的核心,因此没有额外的功能。唯一键是下一个主要版本中预期的功能:http://www.ladislavmrnka.com/2011/03/unique-key-constraints-in-entity-framework/ - Ladislav Mrnka
我已经阅读了您网站上链接的代码块。看起来非常有前途。请问您是否有关于beta版本何时发布的任何信息? - Rasto
不,我没有任何信息。我期待它作为下一个.NET版本的一部分。 - Ladislav Mrnka

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