我与另一位开发人员就 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/