【发布时间】:2011-01-21 06:32:59
【问题描述】:
去年我使用实体框架(当然是 .NET3.5)为我们的项目开发了数据访问服务,并使用 Julie Lerhman 的书作为开发状态跟踪 POCO 对象的指南。我们使用 WCF,也有 Silverlight 3 客户端。我们正在迁移到 .NET 4.0,我想切换到使用代码生成来消除开发人员在编写 POCO 类和翻译类时浪费的时间。
根据我所做的研究,似乎有 3 种状态跟踪 POCO 的方法:
1) 更改的跟踪代理:似乎对我们没有用,因为这似乎不适用于 WCF 序列化。
2) 基于快照:在检索 POCO 实体图时拍摄快照,将客户端返回的图与该快照进行比较,并比较差异......对我来说似乎很好。
3) 自我跟踪实体:代码生成器生成用于在 POCO 对象内进行自我跟踪的逻辑。这似乎与我们现在所做的很接近,只是它都是为我们生成的。
我正在尝试找出所有这些方法之间的优缺点。我猜测 1 和 2 是“连接的”,并且它们需要最初查询 POCO 的 ObjectContext 以保持实例化,但无法确认这一点。鉴于选项 3 似乎做了同样的事情,而且更多……
快照对我来说似乎是最简单的,但如果这需要 ObjectContext 长时间保持打开状态,我不太确定...
我只是一名初级程序员,因此非常感谢这里的任何建议,尤其是关于 Silverlight 3(我相信选项 2 和 3 与 Silverlight 3 一起使用,但 2 可能有问题)。
【问题讨论】:
-
作为一个更新,我现在在我们的 WCF/Silverlight 4 应用程序中使用状态跟踪实体,它们工作得很好(尽管在删除方面存在问题)。导航属性现在是 TrackableCollections,它派生自 ObservableCollection,因此在梦中绑定到 XAML。我非常推荐这个解决方案。
标签: wcf entity-framework poco snapshot self-tracking-entities