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

是否建议将自跟踪实体与WCF服务一起使用?,wcf,entity-framework,self-tracking-entities,Wcf,Entity Framework,Self Tracking Entities,我想知道WCF服务是否建议使用自跟踪实体(在实体框架中)?如果是的话,那么你能给我一个指导如何做到这一点的教程吗 实际上,我将使用Prism与MEF和MVVM开发一个WPF应用程序。我决定使用实体框架。我希望得到关于这种方法的建议和建议 任何帮助都将不胜感激。一般来说,我会避免自我跟踪实体——我在博客上写过 创建您自己的DTO并使用它们来管理数据传输,然后在服务中使用您的POCO对象,并将它们与实体框架一起使用以实现持久性 如果您想要自我跟踪,那么有一种稍微干净一点的方法 我想知道使用自跟踪实体

我想知道WCF服务是否建议使用自跟踪实体(在实体框架中)?如果是的话,那么你能给我一个指导如何做到这一点的教程吗

实际上,我将使用Prism与MEF和MVVM开发一个WPF应用程序。我决定使用实体框架。我希望得到关于这种方法的建议和建议


任何帮助都将不胜感激。

一般来说,我会避免自我跟踪实体——我在博客上写过

创建您自己的DTO并使用它们来管理数据传输,然后在服务中使用您的POCO对象,并将它们与实体框架一起使用以实现持久性

如果您想要自我跟踪,那么有一种稍微干净一点的方法

我想知道使用自跟踪实体(在实体框架中)是否合适 推荐使用WCF服务

这取决于你问谁。如果你问微软,他们会告诉你是的,因为他们根本没有更好的东西可以提供。STE是对这个非常古老的问题的回应。问题在于,EF本身具有合并两个实体图之间的更改的功能(您必须完全自己完成),而在MS平台上工作的开发人员(有时包括我)也有一些共同的行为:

  • 他们懒得开发自己的问题解决方案,他们希望MS提供的API能带来一些魔力
  • 大多数情况下,他们在必须使用的技术方面没有经过培训/熟练/胜任,因为他们必须经常换新的技术
  • 他们知道的唯一API是.NET Framework的一部分。他们不寻找其他选择,也不比较功能
前两点是MS策略的结果,其中RAD成为designer的同义词(或新出现的T4模板)

我对STEs有什么看法。我想补充STE的另一个缺点——它们在参与者之间移动大型数据集。如果您决定从服务器获取实体图,请更改图中的单个实体并将数据推回,它们将再次传输整个图。仅传输更改的实体会导致与STE的核心逻辑发生冲突。我还担心他们会完全按实体级别而不是按属性级别跟踪更改。如果修改具有大型二进制或字符串数据的实体,可能会导致在服务和数据库之间以及服务和客户端之间传输过多不需要的数据

无论如何,对于数据流量低、实体小的简单应用程序,它们可以很好地完成工作,允许您快速构建应用程序,但无需严格分离关注点。您将从服务中获取实体,并将它们直接绑定到WPF UI,它们将能够为您跟踪更改。稍后,您将把实体推回服务,它们将能够持久化更改。您的客户机和服务将紧密耦合,但在某些情况下,这已经足够好了