gpt4 book ai didi

entity-framework - 代码优先与模型/数据库优先

转载 作者:行者123 更新时间:2023-12-03 03:53:53 24 4
gpt4 key购买 nike

使用 Entity Framework 4.1 代码优先与使用 EDMX 图表的模型/数据库优先相比有何优缺点?

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

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

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

在这两种情况下,我最终得到 POCO对象是 ORM不可知论和源自 DbContext 的上下文.

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

那么这两种方法有什么区别呢?这只是关于 VS2010 与 Enterprise Manager 的偏好吗?

最佳答案

我认为差异是:

代码优先

  • 非常受欢迎,因为核心程序员不喜欢任何类型的设计器,并且在 EDMX xml 中定义映射过于复杂。
  • 完全控制代码(没有难以修改的自动生成代码)。
  • 一般期望您不会为 DB 操心。 DB只是一个没有逻辑的存储。 EF 将处理创建,您不想知道它是如何完成这项工作的。
  • 对数据库的手动更改很可能会丢失,因为您的代码定义了数据库。

数据库优先

  • 如果您拥有由 DBA 设计、单独开发的数据库或拥有现有数据库,则非常受欢迎。
  • 您将让 EF 为您创建实体,修改映射后您将生成 POCO 实体。
  • 如果您想要 POCO 实体中的其他功能,您必须 T4 修改模板或使用部分类。
  • 可以手动更改数据库,因为数据库定义了您的域模型。您始终可以从数据库更新模型(此功能非常有效)。
  • 我经常将其与 VS 数据库项目一起使用(仅限高级版和旗舰版)。

模型优先

  • 恕我直言,如果您是设计师爱好者(=您不喜欢编写代码或 SQL),那么很受欢迎。
  • 您将“绘制”您的模型,并让工作流程生成您的数据库脚本,让 T4 模板生成您的 POCO 实体。您将失去对实体和数据库的部分控制,但对于小型简单项目,您将非常高效。
  • 如果您想要 POCO 实体中的其他功能,您必须 T4 修改模板或使用部分类。
  • 对数据库的手动更改很可能会丢失,因为您的模型定义了数据库。如果您安装了数据库生成电源包,则效果会更好。它将允许您在 VS 中更新数据库架构(而不是重新创建)或更新数据库项目。

我预计 EF 4.1 还会有一些与代码优先与模型/数据库优先相关的其他功能。 Code First 中使用的 Fluent API 并不提供 EDMX 的所有功能。我希望存储过程映射、查询 View 、定义 View 等功能在首先使用模型/数据库和 DbContext(我还没有尝试过)时起作用,但它们在代码中不起作用。

关于entity-framework - 代码优先与模型/数据库优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5446316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com