实体框架 4 代码优先的优缺点 [关闭]

Posted

技术标签:

【中文标题】实体框架 4 代码优先的优缺点 [关闭]【英文标题】:Entity Framework 4 Code-First pros and cons [closed] 【发布时间】:2010-07-25 17:18:50 【问题描述】:

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

谢谢

【问题讨论】:

【参考方案1】:

优点

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

缺点

    不支持像 Fluent nHibernate 那样自定义数据库映射约定的 API。 有点难以映射到现有数据库。(这可能会在发布版本中更改)。

有关使用 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/

【讨论】:

你的缺点。不是真的!因为 T4 模板可用于利用 EF 设计器来简单地支持 EF-Code First!【参考方案2】:

缺点:

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

优点

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

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

【讨论】:

延迟加载、外键、存储过程等功能怎么样? @Craig “既然你没有 EDMX,你就不能预先生成视图”恐怕这不是真的。您可以根据您的模型类生成视图 - 无论您是否有 edmx 文件。 @Bikal:EdmGen 的语法是什么?一位 EF PM 在一年前告诉我这是不可能的。 ...或者您是否将 MVC 视图与 EF 视图混淆了? @Craig。抱歉,我好像误会了你。我的意思是 MVC 视图而不是 EF 视图。不太确定 EF 视图。 @Bikal:我不明白这怎么可能。使用纯代码,在运行时之前您没有 EF 模型,因此在此之前您不可能生成视图。【参考方案3】:

由于您专门询问了延迟加载,因此这里有一篇文章显示 Working with Lazy Loading with Entity Framework Code First,默认情况下它已启用。为了具体回答您的这部分问题,是的,使用 Code First,您仍然可以获得延迟加载的好处,事实上,正如帖子所示,您可以非常精细地控制此功能。

【讨论】:

以上是关于实体框架 4 代码优先的优缺点 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

代码优先与模型/数据库优先[关闭]

实体框架作为数据库代码的类型检查/验证系统 [关闭]

实体框架 4 和应急系统

Volley框架的优缺点-->

实体框架4.1代码优先映射问题

首先关闭 EF 代码的 CTP5 的 ProxyCreationEnabled 有啥缺点