public async Task <List <CourseDTO> > GetAsync(bool include = false) { //if (include) //var entities = await _dbReadService.GetAsync<TSource>(); var courses = await _dbReadService.GetQuery <Course>() .Include(c => c.Instructor) .ToListAsync(); return(_mapper.Map <List <CourseDTO> >(courses)); }
public async void GetCourseAsync() { /* var userCourse = await _db.SingleAsync<UserCourse>( * expression: uc => uc.UserId.Equals(userId) && uc.CourseId.Equals(courseId)); * * if (userCourse == null) return default; * * var course = await _db.SingleAsync<Course>(c => c.Id.Equals(courseId), * include: true); */ var courseId = 1; await _dbReadService.GetQuery <Course>(c => c.Id.Equals(courseId)) .Select(c => c.Instructor).LoadAsync(); // load course's instructor }
public async Task <Course> GetCourseAsync(string userId, int courseId) // produces two simple sql queries { await _dbReadService.GetQuery <Module>() // load course's modules .Where(c => c.CourseId.Equals(courseId)) .LoadAsync(); await _dbReadService.GetQuery <Video>() // load course's videos .Where(v => v.CourseId.Equals(courseId)) .LoadAsync(); await _dbReadService.GetQuery <Download>() // load course's Downloads .Where(v => v.CourseId.Equals(courseId)) .LoadAsync(); var userCourse = await _dbReadService.GetQuery <UserCourse>() // one row sql query result .Where(uc => uc.UserId.Equals(userId) && uc.CourseId.Equals(courseId)) .Include(c => c.Course) // load course .ThenInclude(c => c.Instructor) // load course's instructor .FirstOrDefaultAsync(); return(userCourse?.Course ?? default); }
private async Task FillViewDataAsync(string userId) { var user = await _dbReadService.SingleAsync <VODUser>(u => u.Id.Equals(userId)); Customer = new UserDTO { Id = user.Id, Email = user.Email }; Courses = await _dbReadService.GetQuery <UserCourse>()//produces compact sql query .Where(uc => uc.UserId.Equals(userId)) .Select(uc => uc.Course) .ToListAsync(); var userCourseIds = Courses.Select(uc => uc.Id); var availableCourses = await _dbReadService.GetAsync <Course>( c => !userCourseIds.Contains(c.Id)); AvailableCourses = availableCourses.ToSelectList("Id", "Title"); }