【发布时间】:2014-09-11 03:25:15
【问题描述】:
我正在尝试使用存储库模式、域模型和服务层将简单的搜索功能构建到应用程序中。
我四处搜索,没有找到任何符合存储库模式的东西。我已经快速阅读了规范方法,但这看起来并不符合我的要求。请继续阅读。
典型的搜索包括:找一个上过 xyz 大学的学生,学习 abc 科目,会说英语,而且...所以,我基本上是在每张桌子上打。
我有以下几层:
服务层
AppStudentService, AppCollegeService, ...
业务逻辑层 (BLL),其中包含以下领域模型:
学生、大学、学科、语言、SearchService ...
数据访问层 (DAL),其中包含以下存储库:
StudentRepository、CollegeRepository、SubjectRepository、LanguageRepository
为了解决这个问题,我在 Service 层构建了一个 AppSearchService。这会在 BLL 中实例化 SearchService,并在 DAL 中实例化所有必需的存储库。
在 BLL 中,我构建了一个 SearchService,其中包含搜索逻辑并在每个存储库上调用 SubSearch() 方法来获取其区域的数据,例如StudentRepository.SubSearch 返回学生详细信息。业务逻辑会将所有子搜索结果捆绑在一起,返回最终的搜索结果。
我决定将搜索分解为多个小查询,即 SubSearch 方法,而不是包含许多连接的大型搜索查询。使用实体框架。
问题 1。
每个存储库都有它的标准方法,例如添加、保存、删除、FindAll、FindBy 和 SubSearch 方法。在这里添加我的自定义(非 repo)方法是个好主意,还是会污染存储库设计?
问题 2。
在 DAL 中将所有 SubSearch 方法和搜索逻辑放在一个新的 Search 类(和方法)中会更好吗?这样所有的逻辑都在一起,不需要实例化所有的 BLL 对象和 Repo 对象,即更好的性能。
问题 3。
我为存储库模式所做的事情是一种好方法吗?如果没有,谁能指出我正确的方向,谢谢。
【问题讨论】:
标签: asp.net-mvc repository-pattern