关于实体框架:使用DB First与Code First的优缺点是什么?

What are the advantages/disadvantages of using DB First versus Code First?

我知道enum当前仅在2011年6月的CTP中可用,而在4.2中将不可用。 还有哪些其他因素会使某人选择另一个?


Ladislav Mrnka有一个很好的SO答案,它可以解决DB First,Code First和Model First之间的差异。我强烈建议您去阅读并投票。

除此之外,我只补充以下几点:

  • 即使在2011年6月的CTP中,对Enum的支持也很有限,因此您可能
    想看看是否有任何问题对您有用。更新:EF5 +通过EF Designer和Code First支持枚举。

  • 如果您正在针对Oracle数据库实施EF,并且您
    不想支付数据提供商的费用,那么您将
    不使用Code First,作为Oracle自己的提供程序(仍处于beta中)
    不支持。

编辑:这是拉迪斯拉夫的另一个全面的答案。


请参阅中的实体框架开发方法
http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application


优点:一种通用语法(LINQ / Yoda),可用于所有对象查询(无论是否为数据库);如果按预期使用,则非常快;易于实现SoC;完成复杂任务所需的编码更少

缺点:您必须以一种非传统的方式来处理数据,并非每个数据库都可用

缺点:如果数据库FE中发生任何架构更改,将无法正常工作!!!!您还必须在解决方案中更新架构!!!

优点:使用LINQ / FE对象快速,直接地进行添加/修改/删除/更新。

优点:-易于映射业务对象(在环境中具有拖放表)。
-当您使用小型/中型域模型时,它将保持良好的性能。

缺点:-使用大型域模型时,它是有限的。
-可扩展性。