2016-09-08 14 views
0

私は以下のテーブルデザインを持っています。レイジーローディングは1〜0または1の関係では機能しません

enter image description here ここからわかるように、1対多数の関係があり、多くはEpisodePatient側にあります。

次に、私は以下のクラスを持っています。

public class EpisodeModel 
{ 
    public int ID { get; set; } 
    public virtual EpisodePatientModel EpisodePatient { get; set; } 
} 
public class EpisodePatientModel 
{ 
    public int EpisodePatientID { get; set; } 
    public virtual EpisodeModel Episode { get; set; } 
} 

私はEntity Frameworkで1対0またはそれ以上の関係を設定しています。その理由は、ビューからすべてのEpisodePatientsを選択していて、アクセスしたときにエピソードをレイジーにロードしたいのです。

これは私の関係を設定する方法です。

modelBuilder.Entity<EpisodePatientModel>().HasRequired(r => r.Episode).WithOptional(o => o.EpisodePatient); 

私はエピソードが常にEpisodePatientを持ち、またその逆になるよう、これは、ゼロへの1つ私のコードの多くとして機能します。

私が直面している問題は、EpisodePatientを読み込み、エピソードリンクされたアイテムにアクセスしようとすると、常にnullであり、レイジー読み込みが発生しないということです。

私はここで間違っていますか?

UPDATE

これは私が元EpisodePatientアイテムをロードする方法です。

this.DbContext.EpisodePatients.AsNoTracking(); 
+0

EpisodePatientをロードショークエリ。 –

+0

@mwisnicki私の更新 –

+0

を1から0または1と述べたタイトルでご覧ください。しかし、細部には、1対多の関係があり、多くはエピソード患者側にありますか?それが1対多であれば、それを変更する必要があります: 'public virtual ICollection EpisodePatient {get;セット; } ' – Ziyad

答えて

0

あなたがそれを使用する場合は、あなたの状況が追跡されていない、あなたが必要な場合は、より多くのデータを含めることはできませんので、AsNoTracking()ずに試してみてください。

そして、1対多の関係に変更してみてください。

modelBuilder.Entity<EpisodePatientModel>().HasRequired<Episode>(s => s.Episode).WithMany(s => s.EpisodePatient); 
+0

これは機能しませんでした。 –

+0

「AsNoTracking()」を使用しないで1対多の関係を試してください。 –

1

I再作成したモデルが、以下のようなデータ注釈を、それが罰金workes:

public class EpisodeModel 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Title { get; set; } 

    public virtual EpisodePatientModel EpisodePatient { get; set; } 
} 

public class EpisodePatientModel 
{ 
    public string Name { get; set; } 

    [Key, ForeignKey("Episode")] 
    public int EpisodeId { get; set; } 
    public virtual EpisodeModel Episode { get; set; } 
} 
+0

テスト用のタイトルと名前のプロパティを追加しました – Ziyad

+0

流暢なAPIを試してみましょう。 EpisodeIdをKeyとして設定している理由と外部キーは不明です。 –

+0

関係は1-1または1-0なので、メインエンティティだけが独自のプライマリキー(id)を持つ必要があり、関連エンティティのプライマリキーはメインエンティティのプライマリキーであるため、[Key、ForeignKey ]、 – Ziyad

関連する問題