我有一个多对多的关系设置,使我在我的上下文中;实体框架6代码首先许多到多选择始终为空
protected override void OnModelCreating(DbModelBuilder modelBuilder){
modelBuilder.Entity<Module>().HasMany(m => m.Questions).WithMany()
.Map(q =>
{
q.ToTable("Modules_And_Questions");
q.MapLeftKey("ModuleId");
q.MapRightKey("QuestionId");
});
base.OnModelCreating(modelBuilder);
}
public virtual DbSet<Module> Modules { get; set; }
public virtual DbSet<Question> Questions { get; set; }
执行
_context.Modules.Where(m => m.ModuleId == 3);
将返回我适当的模块,但问题的元素为null。 (在数据库中检查这显示模块3有40个问题。)
断点显示正在命中OnModelCreating。虽然如果有帮助,但我注意到,在模型构建器中错误地引用引号中的任何元素都不会导致错误,所以我怀疑我正在调用/正确设置它。
那么为什么问题是空的,它应该包含40个问题元素的列表?
如果我使用你提出的语法,我会得到一个错误,“不能将Lambda表达式转换为键入'string'”。 但是使用包含(“问题”)的作品。所以,你的语法应该如何工作,我错过了某些事情? – Matt
@Matt:对于'Include'的lambda版本,您必须在代码文件中添加'using System.Data.Entity;'。 – Slauma