为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

代码-优先与模型/数据库-第一使用实体框架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中的数据库项目。

我希望在EF 4.1的情况下,还有其他一些与代码优先和模型/数据库优先相关的特性。CodeFirst中使用的FLUENT API并不能提供EDMX的所有功能。我期望存储过程映射、查询视图、定义视图等特性在首先使用模型/数据库时起作用DbContext(我还没有试过)但他们没有在代码中首先。


查看完整回答
反对 回复 2019-06-14
  • 3 回答
  • 0 关注
  • 673 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信