加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 谁应该负责分页控制器/ domail服务/存储库?

发布时间:2020-12-16 06:50:40 所属栏目:asp.Net 来源:网络整理
导读:我的问题可能对专业人士来说似乎很奇怪,但请考虑到我来自 ruby on rails world =) 所以,我正在学习ASP.NET Core.与rails相比,我喜欢它所看到的内容.但总有那个但是……让我来描述理论问题. 假设我有一个产品型号.并且数据库中有超过9000条记录.很明显,我必须
我的问题可能对专业人士来说似乎很奇怪,但请考虑到我来自 ruby on rails world =)

所以,我正在学习ASP.NET Core.与rails相比,我喜欢它所看到的内容.但总有那个但是……让我来描述理论问题.

假设我有一个产品型号.并且数据库中有超过9000条记录.很明显,我必须对它们进行分页.我已经阅读了this文章,但在我看来这里有些错误,因为控制器不应该直接使用上下文.它必须使用一些存储库(但是为了简单起见,可能以这种方式提供该示例).

所以我的问题是:谁应该对分页负责?它是否应该是从存储库接收一些可查询对象并仅采用它需要的那些记录的控制器?或者它应该是我自己的商业服务吗?或者存储库是否应该具有公共IEnumerable< Product>等方法. ListProducts(int offset,int page)?

解决方法

针对此问题的一个域驱动设计解决方案是使用 Specification.规范设计模式描述对象中的查询.因此,您可以创建一个PagedProduct规范,该规范将接受任何必要的参数(pageSize,pageNumber,filter).然后,您的一个存储库方法(通常是List()重载)将接受ISpecification,并且能够根据规范生成预期结果.这种方法有几个好处.规范有一个名称(而不是一堆LINQ),你可以推理和讨论.它可以单独进行单元测试,以确保正确性.如果您需要相同的行为(例如在MVC View操作和Web API操作上),它可以很容易地重用.

我介绍了Pluralsight Design Patterns Library中的规格模式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读