为什么要使用DbContext而不是ObjectContext

时间:2013-04-08 09:08:30

标签: 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实体生成器和放大器生成我的POCO类。然后也是EF 4.x DbContext Generator。

编辑:找到此ADO.NET DbContext Generator vs. ADO.NET Poco Entity Generator (ObjectContext)

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

我也想知道ObjectContext的限制。

1 个答案:

答案 0 :(得分: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