繁体   English   中英

自我追踪实体的目的是什么?

[英]What is the purpose of self tracking entities?

我一直在阅读.net中的自跟踪实体以及如何从* .edmx文件生成它们。 我正在努力理解的是生成这些实体的原因是什么让你了解基本的EF实体? 此外,有些人提到了自我跟踪实体和Silverlight,但为什么要使用这些实体而不是客户端或RIA服务生成的共享类?

自我跟踪实体有什么意义,为什么要使用它们?

自跟踪实体(STE)是变更集的实现(变更集的先前.NET实现是DataSet )。 STE和其他实体类型(POCO,EntityObject)之间的区别在于,只有连接到活动ObjectContext时,常见实体类型才能跟踪更改。 一旦公共实体被分离,它就会失去任何变更跟踪能力。 这正是STE所解决的。 即使您将其从ObjectContext分离,STE也能够跟踪更改。

STE的常见用法是在断开连接的场景中,例如通过Web服务进行.NET到.NET通信。 对Web服务的第一个请求将创建并返回STE(序列化时实体被分离,而ObjectContext仅用于单个调用)。 客户端将在STE中进行更改,并在另一个Web服务调用中将其传回。 服务将能够处理更改,因为它将具有STE内部更改跟踪功能。

在没有更改跟踪的情况下处理此方案是可能的,但它要复杂得多,尤其是当您使用整个对象图而不是单个实体时 - 您必须手动将从客户端接收的更改合并到数据库中的当前状态。

请注意, STE不适用于可互操作的解决方案,因为它们的功能基于在服务器和客户端之间共享STE代码。

主要目的是帮助N层开发。 由于它们是自我跟踪的,您可以将它们序列化,例如,WCF服务,然后反序列化它们,它们仍然知道已经进行了哪些更改,并且正在等待数据库。

自我跟踪实体知道如何进行自己的更改跟踪,无论这些更改在哪个层上进行。 作为一种体系结构,自我跟踪实体介于DTO和DataSet之间,并包含每种实体的一些好处。

http://blogs.msdn.com/b/efdesign/archive/2009/03/24/self-tracking-entities-in-the-entity-framework.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM