【发布时间】:2017-06-06 03:18:01
【问题描述】:
我的项目中有两种不同的模型:电影和演员。 Movie 有一个演员列表,Actor 有一个电影列表。我想做的是给一部电影,找到所有演员,然后为每个演员检查他们演过的电影。
所以,为了获取信息,我使用:
var movie = context.Movies.Include("Cast.ActingCredits").FirstOrDefault(m => m.Key == key);
问题在于,虽然ActingCredits 列表不为空,但其中没有值。加载列表中的值时我缺少什么吗? ActingCredits 是 ICollection<Movie>。
public class Actor : ModelBase
{
public ICollection<Movie> ActingCredits { get; set; }
}
public class Movie : ModelBase
{
public string Title { get; set; }
public DateTime Year { get; set; }
public Genre Genre { get; set; }
public int RunTime { get; set; }
public int Sales { get; set; }
public ICollection<Actor> Cast { get; set; }
}
编辑:我注意到这可能是错误的并且是问题的原因。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Movie>().HasMany(p => p.Cast).WithMany();
modelBuilder.Entity<Actor>().HasMany(m => m.ActingCredits).WithMany();
}
【问题讨论】:
-
贴出演员和电影类的结构?
-
什么是key/m.Key?
-
键值在ModelBase类中,它是一个具有
[Key]属性的int。 key是我要获取的电影key,m.Key是给定电影的key。 -
无法重现,它按预期工作(EF6.1.3)
-
context.Actors.Include("ActingCredits")是否按预期工作?
标签: c# entity-framework