为什么要使用DbContext而不是ObjectContext

Noo*_*per 17 entity-framework entity-framework-4

我正在使用EF 4.1并使用DB第一种方法.我也创建了我的.edmx文件.现在我想创建我的POCO课程.

为此,我已经从NuGet安装了EF 4.x DbContext Generator以及EF 4.x POCO实体生成器.

我完全知道建议使用DbContext for EF 4.1+,因为它是从ObjectContext派生的.但是,我仍然使用EF 4.x POCO实体生成器,然后通过EF 4.x DbContext Generator生成我的POCO类.

编辑:发现这个ADO.NET DbContext生成器与ADO.NET Poco实体生成器(ObjectContext)

在任何一种情况下,它都会生成.Context.tt和Model.tt文件.那么这两种工具生成的文件的确切区别是什么?为什么建议在EF 4.1+上使用DbContext?

我还想知道ObjectContext的局限性.

Lad*_*nka 17

的DbContext是使用最普遍的任务时,应当擦亮开发经验,新的API -简单的API被设计得更好,但你仍然必须得到ObjectContext从DbContext,如果你想使用一些更复杂的功能使用旧的API.如果您计划将来将EF升级到5.x或6.x,使用DbContext可能会更容易,因为这是ADO.NET团队所推荐的.

在生成器EF 4.x中,POCO生成器创建了更复杂的类,在内部使用关系修复.当与延迟加载一起使用时,此功能被证明是非常低效的,因此较新的EF DbContext生成器不使用它.

附注:完全支持从一个API到另一个API的代码转换:

  • 您可以使用DbContext构造函数接受ObjectContext从ObjectContext API移动到DbContext API
  • 您可以使用IObjectContext适配器从DbContext API移动到ObjectContext API