entity-framework - 关于使用 MVC3 和 EF 的存储库模式的建议

标签 entity-framework asp.net-mvc-3 repository

我与另一位开发人员就 mvc3 和 EF 的存储库模式进行了讨论,这让我有些困惑。

我不确定将存储库模式与 MVC3 和 EF 一起使用的最佳实践。

假设我有一个名为 Product 的表,其中包含 ProductID 和 ProductName。我创建了新的 EF 模型。 我还创建了一个基本模型 ProductModel

public int ProductID{get;set:}
public string ProductName{get;set}

我的 Controller 是否应该知道关于 EF 创建的我的实体的任何信息?还是我打算在我的存储库中与 EF 进行所有对话?

例如一个基本的帖子

[HttpPost]
public ActionResult Product(ProductModel model)

然后在我的 Controller 中,我将模型传递到我的存储库以处理插入,或者我的 Controller 是否应该直接绑定(bind)到我的 EF 产品模型,然后将其传递到我的存储库以处理插入。

我认为使用存储库的想法是,如果我想在 12 个月内剥离 Entity Framework 并使用其他东西,我只需要更新我的存储库,而不必触及任何我的 Controller 。

什么是最佳实践?

最佳答案

如果您想在一段时间后剥离 Entity Framework 而不更改 Controller,则需要使用存储库模式将持久性逻辑与 UI 分开。

此外,不要将模型类用作 MVC 层的 View models。您可以为 UI 逻辑使用分离的 View 模型,并使用类似 AutoMapper ( http://automapper.codeplex.com/ ) 的东西来映射模型类.

关于entity-framework - 关于使用 MVC3 和 EF 的存储库模式的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7239301/

相关文章:

entity-framework - EF Code First - 多个应用程序版本共享数据库

entity-framework - Entity Framework 迁移 API

c# - 如何在T4模板中 "read"EF6 EntityTypeConfiguration?

c# - Entityframework 是否在创建时自动分配导航属性

javascript - 试图让 Telerik ScriptRegistrar 加载 Telerik 脚本和自定义脚本

asp.net-mvc-3 - ASP.NET MVC3 - EF 数据库优先的数据注释(ObjectContext、DbContext)

c# - EF lambda : The Include path expression must refer to a navigation property

带有中央存储库的 Git

php - WebSVN自动多Repositories