使用“DbContext”是否总是比使用“ObjectContext”更好?

10

我刚刚下载了 EntityFramework.dll v4.3。我找到了一些比较 DbContextObjectContext 的问题,但大多数是来自2010年或2011年初。

我想更深入地了解这个主题。具体来说,有没有关于 DbContext 的书籍可以供我参考?截至今天,DbContext 相对于其老兄 ObjectContext 的局限性是什么?

我意识到 DbContext 更紧凑,因为它暴露的属性更少。这让我觉得我应该从 ObjectContext 迁移到 DbContext。但是,如果我进行此迁移,我会放弃任何功能吗?例如,我已经了解到 DbContext 没有 STE (Self-tracking entities) 功能。这是否仍然成立并且是一个问题?


可能是此问题的重复:'ObjectContext' vs 'DbContext' in Entity Framework - DavidRR
1个回答

16
我想更深入地了解这个主题。具体而言,是否有关于DbContext的书籍可以供我阅读?
您的问题并没有开始得很好,因为单个谷歌查询就可以给出答案。有一本关于DbContext本身的极好的书籍,它不包含任何关于Code First方法的内容,但我想这真的不是您问题的重点。
我找到了一些比较DbContextObjectContext的问题。但大多数都是2010年或2011年早期的。
如果您只想使用DbContext + EDMX替换ObjectContext + EDMX,则比较仍然相同。DbContextObjectContext的封装器,其功能集除与Code First和Migrations相关的功能外并未增长。
我意识到DbContext更紧凑,因为它暴露了较少的属性。这使我认为我应该从ObjectContext迁移。
是的,它更紧凑,并简化了您必须使用上下文完成的大多数常见任务。对于更复杂的任务,您仍然可以通过IObjectContextAdapterDbContext实例转换为ObjectContext实例。
但是,如果我进行此迁移,是否会放弃任何功能?例如,我已经阅读过DbContext没有STE(自跟踪实体)功能。这是否仍然正确,并且是否应该关注?
STE是为ObjectContext创建的,我不认为它被移植到DbContext中,但您可以尝试自己实现此功能。

STEs(子事务引擎)只是一个用于解决某些问题的模板。它作为一个不错的理论解决方案出现了,但由于这个解决方案不适合实际情况,因此并没有得到开发者社区的广泛认可。这也是为什么其他更重要的功能正在被开发,而不是改进或移植这个模板的原因。


4
关于STE:自从首次发布以来,Entity Framework团队没有对自跟踪实体模板进行任何重大更新。他们建议开发人员考虑使用WCF Data Services作为更强大和完整的解决方案。(引自Julia Lerman的《DbContext》第76页) - sǝɯɐſ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接