首先与型号/数据库
什么是使用实体框架4.1的代码优先使用模型/数据库 - 先用EDMX图表的优点和缺点?
我试图完全理解使用EF 4.1构建数据访问层的所有方法。 我正在使用Repository模式和IoC
。
我知道我可以使用代码优先的方法:手动定义我的实体和上下文,并使用ModelBuilder
来微调模式。
我也可以创建一个EDMX
图并选择一个使用T4模板生成相同POCO
类的代码生成步骤。
在这两种情况下,我最终得到了ORM
不可知的POCO
对象以及从DbContext
派生的上下文。
数据库优先似乎是最吸引人的,因为我可以在企业管理器中设计数据库,快速同步模型并使用设计器对其进行微调。
那么这两种方法有什么区别? 它只是关于VS2010与企业管理器的偏好?
我认为不同之处在于:
先编码
数据库第一
模型第一
我预计在EF 4.1的情况下,还有几个与Code First和Model / Database有关的其他功能。 代码中使用的Fluent API首先不提供EDMX的所有功能。 我期望像存储过程映射,查询视图,定义视图等功能在第一次使用模型/数据库和DbContext
(我还没有尝试过)时DbContext
但它们不首先在代码中使用。
我认为“编程实体框架”的作者Julie Lerman这个简单的“决策树”应该有助于更加自信地做出决定:
更多信息在这里。
数据库第一和模型第一没有真正的区别。 生成的代码是相同的,你可以结合这些方法。 例如,您可以使用设计器创建数据库,而不是使用sql脚本更改数据库并更新模型。
当您先使用代码时,无法改变模型而无需重新创建数据库并丢失所有数据。 恕我直言,这种限制是非常严格的,不允许在生产中首先使用代码。 目前它不是真正可用的。
代码的第二个小缺点是模型构建器需要master数据库的特权。 如果您使用SQL Server Compact数据库或者如果您控制数据库服务器,这不会影响您。
代码的优点是非常干净和简单的代码。 您可以完全控制此代码,并且可以轻松修改并将其用作视图模型。
当您创建简单的独立应用程序而无需版本控制并在需要修改生产的项目中首先使用model database时,我可以推荐使用代码优先方法。
链接地址: http://www.djcxy.com/p/15975.html下一篇: How to add a table to the EF4 Context dynamically in code