【问题标题】:Why to use DbContext and not ObjectContext为什么使用 DbContext 而不是 ObjectContext
【发布时间】:2013-04-08 09:08:30
【问题描述】:

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

为此,我安装了 EF 4.x DbContext Generator 以及来自 NuGet 的 EF 4.x POCO Entity Generator。

我完全知道建议将 DbContext 用于 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 的限制。

【问题讨论】:

    标签: entity-framework entity-framework-4


    【解决方案1】:

    DbContext 是较新的 API,可以在使用大多数常见任务时改善开发人员的体验 - 只是 API 设计得更好,但您仍然必须从 DbContext 获取 ObjectContext,如果您想使用更复杂的 API,请使用较旧的 API特征。如果您计划将来将 EF 升级到 5.x 或 6.x,使用 DbContext 可能会更容易,因为这是 ADO.NET 团队所推荐的。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      • 2012-02-19
      • 2022-01-04
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多