然后如何包含调用和返回而不能隐式转换

Vipin Jha

我创建了一个存储库,用于从包含SchoolIdCourseId的中间模式中调用值

我的架构结构如下。

学校

 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; }
}

我的问题是:

  1. 无法找到用于返回值的显式类型。
  2. 无法在get api控制器中调用GetSchoolCourseForSchoolAsync方法。
恩科西

您的返回类型为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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章