EF4 POCO:快照与WCF上的自我跟踪

MrL*_*ane 12 wcf entity-framework snapshot poco self-tracking-entities

去年,我使用Entity Framework(当然是.NET3.5)为我们的项目开发了一个数据访问服务,并使用Julie Lerhman的书作为指导开发了状态跟踪POCO对象.我们使用WCF并且还拥有Silverlight 3客户端.我们正在转向.NET 4.0,我想转而使用代码生成来消除浪费的开发人员编写POCO类和翻译类的时间.

通过我所做的研究,似乎有三种状态跟踪POCO:

1)更改了跟踪代理:对我们似乎没有用,因为它似乎不适用于WCF序列化.

2)基于快照:检索POCO实体图时拍摄快照,将客户端返回的图与该快照进行比较,比较差异......对我来说似乎不错.

3)自跟踪实体:代码生成器生成用于在POCO对象内进行自我跟踪的逻辑.这似乎与我们现在所做的很接近,除非它是为我们生成的.

我试图弄清楚所有这些方法之间的优缺点.我猜测1和2是"连接"的,并且他们需要最初查询POCO以保持实例化的ObjectContext,但是无法确认这一点.我也没有看到为什么有人会真的打扰选项1的原因,因为选项3似乎做同样的事情......

快照似乎对我来说最简单,但如果这需要ObjectContext保持打开很长一段时间我不太确定...

我只是一名初级程序员,所以这里有任何建议,特别是关于Silverlight 3(我相信选项2和3适用于Silverlight 3但2可能有问题)非常感谢.

小智 14

使用选项3.自我跟踪实体,因为这是它们的设计目的.

"自我跟踪实体针对序列化方案进行了优化"

这篇文章给出了很好的演示.

  • 自我跟踪实体(STE)有一个主要缺点.您必须共享T4代码生成器生成的代码才能使STE正常工作.这意味着您无法在客户端使用数据服务引用元数据生成的类,因此仅限于.NET客户端. (10认同)