我应该将此方法放入我的ISchoolclassCodeRepository还是我的ISchoolclassService?
/// <summary>
/// The client passes newly created and existing schoolclass codes.
/// The newly created schoolclass codes are returned.
/// </summary>
/// <param name="newAndExistingSchoolclassCodes">All schoolclass codes and the newly created by the user</param>
/// <param name="schoolyearId">The related schoolyear for a schoolclass code</param>
/// <returns>The newly created schoolclass codes</returns>
public IEnumerable<SchoolclassCode> GetNewCreatedSchoolclassCode(IEnumerable<SchoolclassCode> newAndExistingSchoolclassCodes, int schoolyearId)
{
var existingSchoolclassCodes = _uniOfWork.SchoolclassCodeRepository.GetSchoolclassCodes(schoolyearId).ToList();
var newSchoolclassCodes = existingSchoolclassCodes.Except(newAndExistingSchoolclassCodes,new SchoolclassCodeComparer());
return newSchoolclassCodes;
}
答案 0 :(得分:0)
我的投票将是ISchoolclassService
,如果你有的话。但是,我不会为此目的创建一个。
这还取决于SchoolclassCodeComparer
的作用。如果它拥有自己的数据访问权限,那么它将调用相同的存储库来获取学校代码吗?
如果有一种方法可以将SchoolclassCodeComparer
强加的约束传递给查询,那么我会在存储库中有这个。使用各种规则对结果集进行后处理可以驻留在服务中。
我更喜欢让存储库层处理DataAccess。 Dataaccess中的逻辑将仅限于构造参数,并创建返回结果的投影(如果需要)。
基于任何其他业务逻辑对数据集进行按摩/过滤可能是服务的工作。
答案 1 :(得分:0)
这似乎更像是应用程序逻辑,在您的情况下,这将在您的服务中实现。但是,这通常会进入应用程序层。 Here's some more information解释了各个层次,也许你想采用其中的一些概念。
存储库只保存数据访问逻辑:这意味着类似CRUD的操作。