我有一个带有Entity Framework 5代码的应用程序 - 首先这是我的类的示例:
public partial class PlaningCourseAssistant
{
public PlaningCourseAssistant() {}
public int ID { get; set; }
public int PlaningCourseID { get; set; }
public int AssistantID { get; set; }
public virtual PlaningCourse PlaningCourse { get; set; }
public virtual Teacher Assistant { get; set; }
}
和
public class Teacher
{
public Teacher()
{
...
this.PlaningCourseAssistants = new HashSet<PlaningCourseAssistant>();
}
public int ID { get; set; }
public string Name{ get; set; }
....
public virtual ICollection<PlaningCourseAssistant> PlaningCourseAssistants { get; set; }
}
和
public partial class PlaningCourse
{
public PlaningCourse()
{
...
this.PlaningCourseAssistants = new HashSet<PlaningCourseAssistant>();
}
public int ID { get; set; }
public string Title { get; set; }
...
public virtual ICollection<PlaningCourseAssistant> PlaningCourseAssistants { get; set; }
}
当我向我的PlaningCourseAssistant
添加一个新对象时:
var pcb = new PlaningCourseAssistant
{
PlaningCourseID = CourseID,
AssistantID = assistantID,
};
try
{
planingCourseAssistantService.Add(pcb);
uow.SaveChanges();
} catch { }
之后当我想获得PlaningCourseAssistant
列表时,添加的PlaningCourseAssistant
的{{1}}导航键为空。
为什么会这样?我该如何解决这个问题?
答案 0 :(得分:3)
EF无法延迟加载“助理”属性,因为您使用的PlaningCourseAssistant
实例不是由EF创建的代理。
您可以使用显式加载
context.Entry(pcb).Reference(p => p.Assistant).Load();
context.Entry(pcb.Assistant).Collection(p => p.PlaningCourseAssistant).Load();
或者让EF创建PlaningCourseAssistant
var pcb = context.PlaningCourseAssistants.Create();