[英]Anonymous object in LinQ with join/relations
我对MVC和实体框架还很陌生。 我创建了一个基于实体的模型。 视图正在使用新模型。 用查询填充模型:
public IEnumerable<TimeTableInsertModel> getTimeTableDetails(int? id)
{
using (var db = new EFDbContext())
{
return (from s in db.TimeTables
where s.TimeTableId == id
select new
{
TimeTableId = s.TimeTableId,
MovieId = s.MovieId,
RoomId = s.RoomId,
SeatsAvaible = s.SeatsAvaible,
StartTime = s.StartTime,
EndTime = s.EndTime,
Movie = s.Movie,
Reservations = s.Reservations,
Room = s.Room,
TicketQuantity = 0,
}).ToList().Select(x => new TimeTableInsertModel
{
TimeTableId = x.TimeTableId,
MovieId = x.MovieId,
RoomId = x.RoomId,
SeatsAvaible = x.SeatsAvaible,
StartTime = x.StartTime,
EndTime = x.EndTime,
Movie = x.Movie,
Reservations = x.Reservations,
Room = x.Room,
});
}
}
很好 但是:表“电影”与“类型”和“语言”有2个关系。 这两个表未填写在模型中。 而且我不知道该怎么做。 我已经尝试过这种方式:
Language = s.Movie.Language,
Reservations = s.Reservations,
Genre = x.Movie.Genre,
Language = x.Movie.Language,
但是Visual Studio表示该模型不包含“流派”和“语言”的定义。
有人可以帮忙吗? 原始模型“ TimeTableModel”具有以下内容:
public partial class TimeTable
{
public TimeTable()
{
Reservations = new HashSet<Reservation>();
}
public int TimeTableId { get; set; }
public int MovieId { get; set; }
public int RoomId { get; set; }
public int SeatsAvaible { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
public virtual Movie Movie { get; set; }
public virtual ICollection<Reservation> Reservations { get; set; }
public virtual Room Room { get; set; }
}
还有TimeTableInsertModel(视图使用了女巫):
public class TimeTableInsertModel
{
[Key]
public int TimeTableId { get; set; }
public int MovieId { get; set; }
public int RoomId { get; set; }
public int SeatsAvaible { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
public virtual Movie Movie { get; set; }
public virtual ICollection<Reservation> Reservations { get; set; }
public virtual Room Room { get; set; }
public int TicketQuantity { get; set; }
}
您的孩子是虚拟的,因此您需要告诉EF加载它们。 有几种类似的技术:
from s in db.TimeTables.Include("Movie.Genre").Include("Movie.Language")
这将导致电影及其类型和语言儿童的加载。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.