代码-优先与模型/数据库-第一使用实体框架4.1代码-先通过模型/数据库-先使用EDMX图的利弊是什么?我试图完全理解使用EF4.1构建数据访问层的所有方法。我在使用储存库模式IoC.我知道我可以使用代码优先的方法:手动定义我的实体和上下文,然后使用ModelBuilder微调架构。我还可以创建一个EDMX图,并选择使用T4模板生成相同代码的代码生成步骤。POCO上课。在这两种情况下,我最终POCO对象是ORM产生的不可知论者和上下文DbContext.数据库首先似乎是最有吸引力的,因为我可以在企业管理器中设计数据库,快速同步模型并使用设计器对其进行微调。那这两种方法有什么区别呢?这仅仅是VS 2010对企业经理的偏好吗?
3 回答
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
代码优先
非常受欢迎,因为硬核程序员不喜欢任何类型的设计人员,在EDMXXML中定义映射太复杂了。 完全控制代码(没有自动生成的代码,很难修改)。 一般的期望是,您不必费心使用DB。DB只是一个没有逻辑的存储。EF将处理创建,您不想知道它是如何完成工作的。 对数据库的手动更改很可能会丢失,因为您的代码定义了数据库。
数据库优先
如果您有由DBA设计的DB,或者是单独开发的,或者您有现有的DB,则非常受欢迎。 您将让EF为您创建实体,在修改映射之后,您将生成Poco实体。 如果您想要Poco实体中的其他特性,则必须使用T4、修改模板或使用部分类。 手动更改数据库是可能的,因为数据库定义了域模型。您可以随时从数据库中更新模型(此功能运行得很好)。 我经常使用这与数据库项目(只有高级和最终版本)。
模型优先
如果你是设计师迷,IMHO很受欢迎(你不喜欢写代码或SQL)。 您将“绘制”您的模型,让工作流生成您的数据库脚本,让T4模板生成您的Poco实体。您将失去对实体和数据库的部分控制,但对于小型轻松项目,您将非常有效率。 如果您想要Poco实体中的其他特性,则必须使用T4、修改模板或使用部分类。 对数据库的手动更改很可能会丢失,因为您的模型定义了数据库。如果您安装了数据库生成电源包,这将更好地工作。它将允许您更新数据库架构(而不是重新创建)或更新VS中的数据库项目。
DbContext
添加回答
举报
0/150
提交
取消