代理POCO就像自我跟踪实体一样

时间:2011-07-09 10:45:16

标签: .net entity-framework

据我所知,Proxied POCO对象可以跟踪仅附加到ObjectContext的更改。相反,STE跟踪变化甚至被分离。我很好奇为什么不支持在内部实施STE行为的POCO代理?

1 个答案:

答案 0 :(得分:1)

仅以此为个人意见。

没有“自我跟踪代理”,因为对于当前的实现,它也没有意义。原因:

  • 自我跟踪实体的开发是为了支持Web服务上的变更集方案,其中实体能够跟踪客户端的变化,客户端会将这些变更传递回服务,实体会将更改应用回上下文的新实例。
  • 要使此工作,客户端和服务必须共享自我跟踪实体的实现。

这应该是STE的使用。在任何其他情况下,他们没有太多意义

  • 在直接访问EF的WinForms / WPF / Service应用程序中,您不需要它们,使用它们通常是一个不好的方案,因为您可以直接使用附加的实体。
  • 在Web应用程序中,您不需要它们,因为它需要在页面中序列化(=与视图状态相同)或在会话/缓存中存储它们。第一种情况是设计方法已经死了很多年,你应该根本不使用它,其次应尽可能避免。

那你在哪里看到“自我跟踪代理”的用法?你想用它们代替STE吗?为什么?更重要的是如何? STE实现的主要优点是它们是可序列化的,而动态创建的代理则不是!如果检查Web服务(WCF)上的序列化是如何工作的,您将看到在服务启动时必须知道通过服务传递的所有可序列化类型。否则只会暴露出基本未经批准的内容。