【问题标题】:Entity Framework + POCO Downfalls?实体框架 + POCO 失败?
【发布时间】:2011-08-24 15:48:48
【问题描述】:

我听说带有实体框架的 POCO 有缺点,但我不能 100% 确定它们是什么。我听说更改跟踪存在问题。主要缺点是什么以及解决方法是什么?我正在考虑在即将到来的项目中使用 POCO 实体,并希望做好充分准备。

谢谢!

【问题讨论】:

    标签: .net entity-framework frameworks entity poco


    【解决方案1】:

    失败取决于您要编写的应用程序的类型。 POCO 从架构的角度来看非常棒,因为它们不会引入对实体框架的依赖。变更跟踪的问题可以分为两个独立的部分:

    • 分离的实体
    • 性能

    分离实体不仅是 POCO 的问题。这是 EF 甚至整个 ORM 概念中的一个全球性问题(但其他 API 可能有更好的工具来处理这个问题)。关键是 ORM 负责持久化对实体所做的更改。为此,它提供了一些更改跟踪机制,但这些更改跟踪机制仅在 ORM 知道实体时才起作用。一旦你分离一个实体(如果 EF 调用 Detach 或处置 ObjectContext 或创建实体而不从数据库加载它 - 在 Web 应用程序和 Web 服务中很常见)EF 不知道更改并且一旦你想保存实体,您必须告诉 EF 发生了什么变化。这是easy to do in case of single entity,但在整个对象图的情况下是pretty big challenge。这可以通过STEs 部分解决,但I don't think that STEs are good solution 可以解决这个问题 - 它们仅在某些情况下有用。

    性能问题也与变更跟踪有关。有几份报告显示,如果 EF 想要跟踪实体中的更改,则需要很长时间来初始化更改跟踪(当 entity is loaded from databaseattached to the context 时)。仅当您计划使用大型数据集时,此问题才很重要。

    仍然有很多成功的项目使用 POCO,并且大多数项目可能永远不会遇到这些问题。

    【讨论】:

      猜你喜欢
      • 2011-08-21
      • 2012-03-08
      • 1970-01-01
      • 2012-03-22
      • 2011-03-04
      • 2016-03-17
      • 2016-01-28
      • 1970-01-01
      • 2012-10-18
      相关资源
      最近更新 更多