我一直在阅读有关.net中的自我跟踪实体以及如何从* .edmx文件生成它们的信息。我努力了解的是,生成这些实体的原因是什么使您超过了基本EF实体?另外,有些人提到了自我跟踪实体和Silverlight,但是为什么要使用这些实体而不是RIA服务生成的客户端或共享类?
自我跟踪实体的意义何在?为什么要使用它们?
自跟踪实体(STE)是变更集的实现(以前的.NET变更集实现是DataSet)。STE和其他实体类型(POCO,EntityObject)之间的区别在于,普通实体类型仅在连接到living时才能跟踪更改ObjectContext。一旦分离了公共实体,它将失去任何变更跟踪功能。这正是STE所解决的。即使将STE与STE分离,STE也能够跟踪更改ObjectContext。
DataSet
ObjectContext
STE的常见用法是在断开连接的场景中,例如通过Web服务进行的.NET到.NET通信。对Web服务的第一个请求将创建并返回STE(实体在序列化时是分离的,ObjectContext仅用于服务单个呼叫)。客户端将在STE中进行更改,并将其传递回另一个Web服务调用。服务将能够处理更改,因为它将具有STE内部更改跟踪。
无需更改跟踪就可以处理这种情况,但是它要复杂得多,尤其是当您使用整个对象图而不是单个实体时- 您必须手动将从客户端接收到的更改合并到数据库中的当前状态。
请注意,STE不适用于可互操作的解决方案,因为它们的功能基于服务器和客户端之间共享STE代码。