代码-优先与模型/数据库-第一

代码-优先与模型/数据库-第一

使用实体框架4.1代码-先通过模型/数据库-先使用EDMX图的利弊是什么?

我试图完全理解使用EF4.1构建数据访问层的所有方法。我在使用储存库模式IoC.

我知道我可以使用代码优先的方法:手动定义我的实体和上下文,然后使用ModelBuilder微调架构。

我还可以创建一个EDMX图,并选择使用T4模板生成相同代码的代码生成步骤。POCO上课。

在这两种情况下,我最终POCO对象是ORM产生的不可知论者和上下文DbContext.

数据库首先似乎是最有吸引力的,因为我可以在企业管理器中设计数据库,快速同步模型并使用设计器对其进行微调。

那这两种方法有什么区别呢?这仅仅是VS 2010对企业经理的偏好吗?


白板的微信
浏览 634回答 3
3回答

海绵宝宝撒

我认为不同之处在于:代码优先非常受欢迎,因为硬核程序员不喜欢任何类型的设计人员,在EDMXXML中定义映射太复杂了。完全控制代码(没有自动生成的代码,很难修改)。一般的期望是,您不必费心使用DB。DB只是一个没有逻辑的存储。EF将处理创建,您不想知道它是如何完成工作的。对数据库的手动更改很可能会丢失,因为您的代码定义了数据库。数据库优先如果您有由DBA设计的DB,或者是单独开发的,或者您有现有的DB,则非常受欢迎。您将让EF为您创建实体,在修改映射之后,您将生成Poco实体。如果您想要Poco实体中的其他特性,则必须使用T4、修改模板或使用部分类。手动更改数据库是可能的,因为数据库定义了域模型。您可以随时从数据库中更新模型(此功能运行得很好)。我经常使用这与数据库项目(只有高级和最终版本)。模型优先如果你是设计师迷,IMHO很受欢迎(你不喜欢写代码或SQL)。您将“绘制”您的模型,让工作流生成您的数据库脚本,让T4模板生成您的Poco实体。您将失去对实体和数据库的部分控制,但对于小型轻松项目,您将非常有效率。如果您想要Poco实体中的其他特性,则必须使用T4、修改模板或使用部分类。对数据库的手动更改很可能会丢失,因为您的模型定义了数据库。如果您安装了数据库生成电源包,这将更好地工作。它将允许您更新数据库架构(而不是重新创建)或更新VS中的数据库项目。我希望在EF 4.1的情况下,还有其他一些与代码优先和模型/数据库优先相关的特性。CodeFirst中使用的FLUENT API并不能提供EDMX的所有功能。我期望存储过程映射、查询视图、定义视图等特性在首先使用模型/数据库时起作用DbContext(我还没有试过)但他们没有在代码中首先。
打开App,查看更多内容
随时随地看视频慕课网APP