【问题标题】:Entity Framework POCO Change Tracking Strategies实体框架 POCO 变更跟踪策略
【发布时间】:2013-10-04 07:33:04
【问题描述】:

我有一个 N 层应用程序,其中 POCO 由服务器端的实体框架填充并传输到我的客户端应用程序。客户端对 POCO 进行更改或添加新的 POCO,然后将它们发送回服务器以存储在数据库中。

如果我使用的是纯 POCO,即没有代理,也没有自我跟踪实体,人们正在采取哪些常见方法来解决变更跟踪问题?如果您的服务收到一组 POCO,它如何知道使用实体框架进行添加、更新或删除?

【问题讨论】:

    标签: entity-framework-5 poco


    【解决方案1】:

    Entity Framework 没有对这种断开连接的场景提供良好的内置支持。我知道三个一般选项:

    • 使用GraphDiff,一个开源插件库

      优势

      • 无需在客户端编写更改跟踪代码
      • 更新数据库中断开连接的对象图的常用模式
      • 无需在服务器端编写太多代码


      缺点

      • 必须查询数据库并加载实体以检测是否需要添加、更新或删除对象
      • 除了 EF 核心库之外,还依赖第三方库


    • 在服务器端手动更新对象图 (Example)

      优势

      • 无需在客户端编写更改跟踪代码
      • 除了 EF 核心库之外,不依赖第三方库


      缺点

      • 必须查询数据库并加载实体以检测是否需要添加、更新或删除对象
      • 没有通用模式,即大多数更新场景需要单独的代码
      • 要在服务器端编写大量代码


    • 将实体状态的属性添加到您的对象,并通过相应地设置状态在客户端手动跟踪更改(我没有这种方法的示例;我相信,Julie Lerman 正在使用并推荐它)

      优势

      • 无需查询数据库即可检测是否需要添加、更新或删除对象
      • 除了 EF 核心库之外,不依赖第三方库
      • (可能?)服务器端的通用模式,用于将跟踪状态转换为附加实体的实体状态


      缺点

      • 更改跟踪代码以在客户端编写
      • 客户端没有通用模式,即大多数更改跟踪方案(和客户端类型/UI 技术)都需要单独的代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-24
      • 2011-04-23
      • 1970-01-01
      • 2011-01-19
      • 2012-03-22
      • 1970-01-01
      • 2014-12-08
      • 2011-10-27
      相关资源
      最近更新 更多