0

我应该将此方法放入我的 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;
        }
4

2 回答 2

0

ISchoolclassService如果你有的话,我的投票将是。但是,我不会为此目的创建一个。

这也取决于做什么SchoolclassCodeComparer。如果它有自己的数据访问权限,那么它会调用同一个存储库来获取学校代码吗?

如果有一种方法可以将施加的约束传递SchoolclassCodeComparer给查询,那么我会在存储库中拥有它。使用各种规则对结果集进行后处理可以驻留在服务中。

我更喜欢让存储库层处理 DataAccess。Dataaccess 中的逻辑将仅限于构造参数和创建返回结果的投影(如果需要)。

基于任何其他业务逻辑按摩/过滤数据集可能是服务的工作。

于 2013-03-12T17:18:30.890 回答
0

这似乎更像是应用程序逻辑,在您的情况下,这将在您的服务中实现。但是,这通常会进入应用程序层。这里有一些解释各个层的更多信息,也许你想采用其中的一些概念。

存储库仅保存数据访问逻辑:这意味着类似 CRUD 的操作。

于 2013-03-12T17:22:59.467 回答