我有以下
public class MainClass {
public int Id { get;set; }
public virtual ICollection<SubClass> SubClasses { get;set; }
}
public class SubClass {
public int MainClassId { get;set; }
public virtual MainClass MainClass { get;set; }
}
并且我有一对多的设置映射。我的问题是当我这样做时:
var subClass = new SubClass();
subClass.MainClassId = 1;
_dbset.SaveChanges(subClass);
//subClass.MainClass is null after save
只有我可以获取MainClass实体,我才需要调用id = 1的get函数。任何人都知道导致此问题的原因是什么?
答案 0 :(得分:1)
您应将subClass
添加到mainClass's
的{{1}}集合中,然后保存更改。
就像
SubClasses
答案 1 :(得分:0)
以下将起作用:
public class MainClass {
public int Id { get;set; }
public virtual ICollection<SubClass> SubClasses { get;set; }
}
public class SubClass {
public int Id { get;set; }
[ForeignKey("MainClass")]
public int MainClassId { get;set; }
public virtual MainClass MainClass { get;set; }
}
答案 2 :(得分:0)
如果使用代码优先方法,则可能缺少1:M关系的modelbuilder。 在方法OnModelCreating中的上下文中,您需要具有以下内容。
modelBuilder.Entity<MainClass>()
.HasMany(e => e.SubClass)
.WithRequired(e => e.MainClass)
.WillCascadeOnDelete();
我想到的下一件事情是,您可能想在get方法中使用include来指定您需要加载主类的所有子类
context.MainClass.Include(x => x.SubClass).ToList();
或使用其他方法加载联接的数据。 Link
希望对您有所帮助。