我创建了一个存储库,用于从包含SchoolId和CourseId的中间模式中调用值。
我的架构结构如下。
学校
public class Schools
{
public Guid ID { get; set; }
public string BannerUrl { get; set; }
public string Name { get; set; }
public ICollection<SchoolCourses> SchoolCourses { get; set; }
}
课程
public partial class Course
{
public Guid ID { get; set; }
public string Name { get; set; }
public ICollection<SchoolCourses> SchoolCourses { get; set; }
}
Intermidiated表是:SchoolCourse
public partial class SchoolCourses
{
public Guid ID { get; set; }
public Guid SchoolsID { get; set; }
public Guid CoursesId { get; set; }
[ForeignKey("CoursesId")]
public Course Courses { get; set; } // one school can have multiple courses.
[ForeignKey("SchoolsID")]
public Schools Schools { get; set; } // one course can have Multiple School.
}
现在,我基于上述模式创建存储库方法,并希望根据学校ID显示学校中所有可用的课程。
这是存储库类:
public class SchoolCoursesRepository : ISchoolCoursesRepository
{
public readonly learning_gpsContext _GpsContext = null;
public SchoolCoursesRepository(learning_gpsContext GpsContext)
{
_GpsContext = GpsContext;
}
public async Task<ICollection<SchoolCourses>> GetSchoolCourseForSchoolAsync(Guid schoolId)
{
var schoolsCourse = await _GpsContext.School.Where(x => x.ID == schoolId)
.Include(e => e.SchoolCourses)
.ThenInclude(c => c.Courses)
.ToListAsync();
List<SchoolCoursesVm> schoolCoursesVms = new List<SchoolCoursesVm>();
foreach (var course in schoolsCourse.SelectMany(x => x.SchoolCourses.Select(y => y.Courses)))
{
schoolCoursesVms.Add(new SchoolCoursesVm
{
CourseName = course.Name,
});
}
return schoolCoursesVms;
}
SchoolCoursesVm:
public class SchoolCoursesVm
{
public string Id {get; set;}
public string CourseName { get; set; }
}
我的问题是:
您的返回类型为ICollection<SchoolCourses>
,但尝试返回List<SchoolCoursesVm>
更改返回类型以匹配预期的类型
public async Task<ICollection<SchoolCoursesVm>> GetSchoolCourseForSchoolAsync(Guid schoolId) {
var schoolsCourse = await _GpsContext.School.Where(x => x.ID == schoolId)
.Include(e => e.SchoolCourses)
.ThenInclude(c => c.Courses)
.ToListAsync();
List<SchoolCoursesVm> schoolCoursesVms = new List<SchoolCoursesVm>();
foreach (var course in schoolsCourse.SelectMany(x => x.SchoolCourses.Select(y => y.Courses))) {
schoolCoursesVms.Add(new SchoolCoursesVm
{
Id = course.Id,
CourseName = course.Name,
});
}
return schoolCoursesVms;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句