17

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

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

我完全知道建议将 DbContext 用于 EF 4.1+,因为它派生自 ObjectContext。但是,我仍然首先使用 EF 4.x POCO 实体生成器生成了我的 POCO 类,然后还使用了 EF 4.x DbContext 生成器。

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

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

我也想知道 ObjectContext 的限制。

4

1 回答 1

17

DbContext 是较新的 API,它应该在使用大多数常见任务时改善开发人员的体验 - 只是 API 设计得更好,但如果您想使用一些更复杂的功能,您仍然必须ObjectContext从旧 API 获取并使用。DbContext如果您计划将来将 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
于 2013-04-08T09:18:44.403 回答