9

我想知道使用 EF4 Code-First 方法的优缺点。我们能否复制 EF4 生成的类提供的所有功能,例如延迟加载、加载相关实体等?

谢谢

4

3 回答 3

7

优点

  1. 轻量级实体类或基于 POCO。
  2. 由于您自己编写实体类而不是依赖 EF 生成它们,因此可以更好地控制实体类。这意味着您不必定义部分类来进行数据注释。
  3. 永远不必在任何地方指定映射的选项。约定接管配置。
  4. DbContext 遵循存储库模式。
  5. 延迟加载,相关实体加载都为您处理。例如 Post 模型可以在 POCO 中声明 Author 模型,EF 代码首先会自动映射这个关系。再次使用约定使我们如此高效。
  6. 非常适合新建应用程序。
  7. ASP.NET MVC 视图生成效果很好。
  8. ModelBinder 正常工作。

缺点

  1. 没有 API 支持自定义数据库映射约定,如 Fluent nHibernate。
  2. 有点难以映射到现有数据库。(这可能会在发布版本中更改)。

有关使用EF 4.0 Code First的示例代码和到现有数据库的映射,请参阅此博客文章。 http://theminimalistdeveloper.com/2010/07/28/how-to-map-pocos-to-existing-databases-in-entity-framework-4-0-code-first-and-asp-net-mvc- 2/

于 2010-08-11T12:47:40.517 回答
1

缺点:

  • 由于您没有 EDMX,因此无法预生成视图
  • 尚未获得上线许可。希望这会很快改变。

优点

  • 由于没有固定的模式,您可以在运行时动态构建一个。

大多数其他事情都完全相同(延迟加载、显式加载等)。还有一些是个人喜好问题(API)。

于 2010-07-26T13:37:16.170 回答
0

由于您特别询问了延迟加载,因此这里有一篇文章显示使用实体框架代码优先处理延迟加载,默认情况下启用它。为了具体回答您的问题,是的,使用 Code First,您仍然可以获得延迟加载的好处,事实上,正如帖子所示,您可以非常精细地控制此功能。

于 2011-10-03T03:08:00.753 回答