1

私は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に、追加されたPlaningCourseAssistantAssistantナビゲーションキーがnullです。

なぜこれが起こるのですか?どうすればこれを修正できますか?

4

1 に答える 1

2

PlaningCourseAssistant使用しているインスタンスが EF によって作成されたプロキシではないため、EF は 'Assistant' プロパティを遅延読み込みできません。

明示的な読み込みを使用できます

context.Entry(pcb).Reference(p => p.Assistant).Load();
context.Entry(pcb.Assistant).Collection(p => p.PlaningCourseAssistant).Load();

または、EFにプロキシインスタンスを作成させますPlaningCourseAssistant

var pcb = context.PlaningCourseAssistants.Create();
于 2012-12-19T08:10:13.610 に答える