具有多个存储库的良好MVC设计

时间:2013-02-21 19:43:38

标签: asp.net-mvc asp.net-mvc-3

我开始怀疑我最初的设计决策,因为我看到的每个地方都会找到MVC上的教程,他们只是将访问层转储到MVC项目中。 (这违背了我所学到的一切)

UML Diagram of my design

  • BarRepo :处理对API的访问权。
  • FooRepo :处理对我的数据库的访问(使用EF)。
  • FooBarHandler :将两个repos中的数据连接到控制器的有用数据中。
  • 控制器:一个控制器,没什么特别的。

正如您在图片中看到的那样,我将每个部分拆分成他们自己的项目并尝试获得松耦合。所以我不会从数据库层发送实体框架类等等。但是我遇到了一些泡菜。提取的数据量已经变得很大,以至于它在前端是显而易见的,所以我需要引入分页。所以我跟着this tutorial。 我的“问题”是,现在MVC,Logic和数据库项目依赖于PagedList,所以事情不再那么整洁和闪亮。

所以我的问题是你会做什么?

1 个答案:

答案 0 :(得分:2)

您不需要使用PagedList,因为您可以自己创建分页项目列表。请查看this StackOverflow question以获取如何执行此操作的示例。

总结:

var pageNum = 3;
var pageSize = 20;

var pagedItems = data.Skip((pageNum - 1) * pageSize).Take(pageSize).ToList();

这样你就不会对PagedList有任何依赖,这有助于减少设计中的耦合。