是否建议将自我跟踪实体与WCF服务一起使用?

Bai*_*aig 3 wcf entity-framework self-tracking-entities

我想知道在WCF服务中是否建议使用Self Tacking Entities(在Entity Framework中)?如果是,那么你可以指导我一个指导如何做到这一点的教程吗?

实际上,我将使用Prism与MEF和MVVM开发WPF应用程序.我决定使用Entity Framework.我想要有关这种方法的建议和建议.

任何帮助将不胜感激.

Lad*_*nka 7

我想知道在WCF服务中是否建议使用Self Tacking Entities(在Entity Framework中)?

这取决于你问谁.如果你问MS,他们会告诉你是的,因为他们根本没有更好的东西.STEs回应了这个非常古老的MS Connect建议.问题在于,EF本身对于合并两个实体图之间的变化(你必须完全自己完成)以及在MS平台上工作的开发人员(有时包括我)共享一些常见的行为有可怕的不良支持:

  • 他们懒得开发自己的问题解决方案,他们希望在MS提供的API中直接有一些魔力.
  • 大多数时候,他们没有接受过必须使用的技术的训练/技能/能力,因为他们不得不经常搬到新的技术.
  • 他们所知道的唯一API是.NET Framework的一部分.他们不会寻找其他选项,也不会比较功能.

前两点是MS策略的结果,其中RAD成为设计者的同义词(或新的T4模板).

分享 @Richard对STEs的看法.我想补充一点STE的另一个缺点 - 他们在参与者之间移动大数据集.如果您决定从服务器获取实体图,请更改图中的单个实体并将数据推回,它们将再次传输整个图.只转移已更改的实体会导致与STE的核心逻辑作斗争.我也害怕他们完全跟踪每个实体级别的变化,而不是每个属性级别.如果修改具有大二进制或字符串数​​据的实体,则可能导致在服务和数据库之间以及服务和客户端之间传输过多不需要的数据.

无论如何,对于具有低数据流量和小实体的简单应用程序,他们可以做得很好,并允许您快速构建应用程序,但没有严格的关注点分离.您将从服务中获取实体并将它们直接绑定到WPF UI,他们将能够为您跟踪更改.稍后您将推送实体返回服务,他们将能够持续更改.您的客户端和服务将紧密耦合,但在某些情况下,它可以很好.