去年,我使用 Entity Framework (当然是 .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 可能有问题)非常感谢。
最佳答案
选择选项 3。自跟踪实体,因为这就是它们的设计目的。
“自跟踪实体针对序列化场景进行了优化”
This post给出了很好的示范。
关于wcf - EF4 POCO : Snapshot vs Self-tracking over WCF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2338661/