去年,我使用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可能有问题)非常感谢。
答案 0 :(得分:14)
答案 1 :(得分:2)
其他两个选项仅在objectcontext出现时进行更改时才适用。你唯一的选择是STE。通过STE,实体可以跟踪自己的变化。将修改后的对象图发送到服务器后,您可以播放这些更改,如下所示。 db.Dustomers.ApplyChanges(客户); db.SaveChnages();
使用STE,您可以在类库项目中创建您的entiites,并在WCF客户端,silverlight客户端,asp.net和wpf之间共享它们。因此,这使您可以为各种客户端重用实体。