12

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

根据我所做的研究,似乎有 3 种状态跟踪 POCO 的方法:

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

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

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

我正在尝试找出所有这些方法之间的优缺点。我猜测 1 和 2 是“连接的”,并且他们需要最初查询 POCO 的 ObjectContext 以保持实例化,但无法确认这一点。我也看不出为什么有人会真正为选项 1 烦恼,因为选项 3 似乎做同样的事情,而且更多......

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

我只是一名初级程序员,所以这里的任何建议,尤其是关于 Silverlight 3(我相信选项 2 和 3 与 Silverlight 3 一起使用,但 2 可能有问题)都非常感谢。

4

2 回答 2

14

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

“自追踪实体针对序列化场景进行了优化”

这篇文章给出了一个很好的示范。

于 2010-02-26T22:16:49.530 回答
2

其他两个选项仅在 objectcontext 存在时完成更改时适用。您唯一的选择是 STE。使用 STE,实体将跟踪自己的变化。当修改后的对象图发送到服务器时,您可以播放这些更改,如下所示。db.Dustomers.ApplyChanges(客户);db.SaveChnages();

使用 STE,您可以在类库项目中创建实体,并在 WCF 客户端、silverlight 客户端、asp.net 和 wpf 之间共享它们。因此,这使您可以为各种客户端重用实体。

于 2010-07-10T06:01:42.743 回答