我正在嘗試檢索movie具有screenings串列的物件。中的每個物件screenings都有一個theater物件,而該物件又具有一個screenings串列。我試圖擺脫那個screenings串列,theater所以我創建了一個theaterDTO模型。
我正在努力實作的目標
var x = _context.Movies
.Where(m => movieId == m.Id)
.Include(m => m.Screenings)
這導致screening串列被多次檢索:在movie物件中和在每個theater物件中movie.theaters
這是Screening課程:
public class Screening : BaseEntity
{
public Theater Theater { get; set; }
public Movie Movie { get; set; }
public DateTime Time { get; set; }
public ICollection<Booking> Bookings { get; set; }
public Screening()
{
Bookings = new List<Booking>();
}
}
Movie:
public class Movie : BaseEntity
{
public string Name { get; set; }
public string Body { get; set; }
public string Dir { get; set; }
public string Pic { get; set; }
public ICollection<Screening> Screenings { get; set; }
public Movie()
{
Screenings = new List<Screening>();
}
}
Theater:
public class Theater : BaseEntity
{
public string Address { get; set; }
public string Name { get; set; }
public ICollection<Screening> Screenings { get; set; }
public Theater()
{
Screenings = new List<Screening>();
}
}
TheaterDTO:
public class TheaterDTO
{
public string Address { get; set; }
public string Name { get; set; }
}
功能:
[HttpGet]
[Route("{movieId}")]
public Movie GetMovieById(Guid movieId)
{
return _context.Screenings
.Where(m => movieId == m.Id)
.Select(x => new TheaterDTO
{
Name = x.Theater.Name,
Address = x.Theater.Address
}).FirstOrDefault();
}
uj5u.com熱心網友回復:
首先定義一個 MovieDTO:
public class MovieDTO
{
public string Name { get; set; }
public string Body { get; set; }
public string Dir { get; set; }
public string Pic { get; set; }
public List<ScreeningDTO> Screenings { get; set; }
}
public class ScreeningDTO
{
public TheaterDTO Theater { get; set; }
}
public class TheaterDTO
{
public string Address { get; set; }
public string Name { get; set; }
}
采取這樣的資料:
var x = _context.Movies
.Where(m => movieId == m.Id)
.Include(m => m.Screenings)
.ThenInclude(s => s.Theater)
.Where(p => p.Id == movieId)
.Select(p => new MovieDTO {
Name = p.Name,
Body = p.Body,
Dir = p.Dir,
Pic = p.Pic,
Screening = p.Screenings.Select(x => new ScreeningDTO {
Theater = new TheaterDTO {
Name = x.Theater.Name,
Address = x.Theater.Address
}
}).ToList()
}).FirstOrDefault();
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/313313.html
上一篇:如何避免使用IF-Else并在.where()函式內使用行內if條件?
下一篇:如何表示足球比賽模型?
