ASP.NET MVC设计模式 - 存储库和数据类 - 什么是最佳实践?

时间:2011-10-21 07:40:32

标签: asp.net-mvc design-patterns

我有一个ASP.NET MVC项目,使用Entity Framework从SQL数据库中获取数据。

我设计了数据类,其中包含统计信息(类组合了产品ID,其条目,这是一个子类),然后我意识到,要将数据放入这些类中,我必须有一组函数,从SQL检索数据,并放入数据类。

然后我找到了存储库方法,我想问一下,它只是一组函数,它们将业务逻辑保存在一个地方吗?或者它比那更复杂?我有一个接口,然后是实现。

3 个答案:

答案 0 :(得分:2)

存储库的想法是将代码放在一个地方,他们也可以从某个持久存储中获取数据(大多数情况下是数据库)。您的业​​务逻辑将位于另一层。

存储库可以提供简单的创建,读取,更新和删除(CRUD)功能,或者更具体的功能,用于获取或更新数据。

您可以看到的其他模式是UnitOfWork(实体框架中使用的ObjectContext就是一个示例)和分层设计模式,它们向您展示如何从业务代码中分离数据访问代码。

您已经提到将界面与实现分开。编码到界面也是一种很好的做法。

Here您可以找到更多信息。 PEAA还包含其他关于设计模式以及如何使用它们的精彩描述。

答案 1 :(得分:1)

  

我有一个接口,然后是实现

这就是它。您可以在接口中定义要在业务实体上执行的操作集,然后针对特定数据访问方法实现此接口。然后,您的ASP.NET MVC控制器将此接口作为构造函数参数。

答案 2 :(得分:1)

存储库不是业务逻辑而是数据持久性逻辑的类。您应该有另一个具有业务逻辑的层。在存储库中,你应该有像FindById,FindByName,Update(实体实体)这样的方法......存储库的操作通常适用于内存中的对象,当你想要持久化你的更改时,你在数据上下文对象上调用Commit(或somethink simmilar) - 这个方法称为工作单元。

Here你可以在.NET platoform上找到关于设计模式的好书(包括MVC,EF存储库模式)。