实体框架 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 代码优先的优缺点 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章