【问题标题】:EF POCO code only VS EF POCO with Entity Data Model仅 EF POCO 代码 VS 带有实体数据模型的 EF POCO
【发布时间】:2011-07-02 11:23:23
【问题描述】:

将域对象与任何类型的持久性代码完全分离的能力使系统更具可扩展性和可维护性。当业务逻辑可以与存储代码分开测试时,测试变得更加容易。将 POCO 与实体框架 (EF) 一起使用绝对是朝着正确方向迈出的一步 :)

在 EF 中使用 poco 有 2 种类型 1.使用实体设计器 2.仅使用代码

EF poco code first 或 EF Poco 使用实体数据模型设计器的最佳方法是哪一个?

谢谢

【问题讨论】:

  • [OT] 你也可以使用 NHibernate,而且你不必做出权衡 :-)
  • @Diego:只是好奇——你到底在暗示什么?据我记得,nHibernate 允许在 xml 和代码(流利的 nHibernate)中定义映射 - 与 EF 中的选项基本相同。那么,您要避免哪些权衡?
  • @Yakimych:使用 NHibernate,您选择的映射方法和工具不会限制可用的功能。
  • @Diego:不幸的是,有时你不得不面对愚蠢的公司政策,他们说:没有 NHibernate、没有开源等等。
  • @LadislavMrnka:总是有careers.stackoverflow.com :-)

标签: entity-framework entity-framework-4 poco ef-code-first


【解决方案1】:

这只是一个选择问题。

EFv4 与设计师

优点:

  • 您拥有设计器支持和 T4 模板,它将为您生成实体 = RAD。
  • 您拥有非常庞大的功能集,包括对视图、存储过程映射和一些自定义模型定义对象(如 QueryView 或模型定义函数)的支持。
  • 在需要时支持其他 EF 类型(自我跟踪实体、实体对象)。

缺点:

  • Designer 对于大型模型(50+ 表)不是很好的工具
  • 设计器并非支持所有功能 - 您必须以 XML 格式访问 EDMX
  • EDMX XML 结构可能是所有可用 .NET ORM 工具中最复杂、最难理解的描述
  • 与设计师在共享环境中工作只是一种痛苦 - 最好在 EDMX 上使用独占锁
  • 编辑:我忘记了我很受欢迎的缺点。 Designer 在 EDMX 中存储所有映射数据以及它自己的关于在图表中定位实体的数据。即使像缩放图表这样愚蠢的操作也会从源代码管理中检查 EDMX 文件。

EF 代码优先

优点:

  • 能够在代码中定义所有内容
  • 基于属性的映射和 Fluent API
  • 一些非常不错的 API 功能 - 约定、本地等。
  • 我认为这个 API 不太复杂且更易于使用

缺点:

  • 它还不是最终版本。当前版本只是社区技术预览版 5。
  • 因为该 API 在最终版本中可能会发生变化。
  • 您必须自己编写所有代码。
  • 与“大”EF 相比,功能集受到限制。
  • 没有文档,目前您必须在博客中查找信息。

目前我正在使用第一种方法。在最终发布之后,我可能会对代码更满意。

【讨论】:

  • 您已经达到了我在回答中的所有要点。我只会增加“对大型模型不太好”的评论的权重。 50张桌子不是一个大模型,但你说得对,它真的变成了50张左右的梨形。这在多开发人员环境中是一场噩梦。我已经开始使用 CTP5,即使考虑到缺点,因为我怀疑它们会在我之前很久就完成,而目前的想法是 ctp5 是它确定之前的最终版本。
猜你喜欢
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 2012-08-26
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多