2016-09-14 1 views
1

Many-> Many関係のコンテキストでInclude(..)、ThenInclude(...)を定義する方法がわかりません。EFコアに多数のナビゲーションプロパティを設定する

だからこれは、NAVプロパティを移入され、SiteEducatorsリンク

var site = this._dbContext.Sites.Include(x => x.SiteEducators).FirstOrDefault(); 
ドキュメントごとに定義

public DbSet<Educator> Educators { get; set; } 
    public DbSet<Site> Sites { get; set; } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 

     #region Site->Educator Link 
     modelBuilder.Entity<SiteEducator>() 
      .HasKey(t => new { t.SiteId, t.EducatorId }); 

     modelBuilder.Entity<SiteEducator>() 
      .HasOne(pt => pt.Site) 
      .WithMany(p => p.SiteEducators) 
      .HasForeignKey(pt => pt.SiteId); 

     modelBuilder.Entity<SiteEducator>() 
      .HasOne(pt => pt.Educator) 
      .WithMany(t => t.SiteEducators) 
      .HasForeignKey(pt => pt.EducatorId); 
     #endregion 
    } 

問題は、私は、「サイト」をデバッグする場合には、ナビゲーションプロパティを持っており、私ができるです"EducatorId"の値はち​​ょうど良いですが、EducatorへのITのナビゲーションプロパティはnullです。

は、これはnullになり、これは私が何を意味するかの

model.SiteEducators.FirstOrDefault().EducatorId 

例値を返します

model.SiteEducators.FirstOrDefault().Educator 

enter image description here

enter image description here

配列に「ThenInclude」の何らかの並べ替えが必要ですか?

私はこの他のオブジェクトをどのように肉付けしますか、どのようなsynatax、任意のアイデアですか?

1)あなたのApplicationDbContextにあなたのリンクテーブルオブジェクトの地図:それはgitの問題のシリーズだように見えるので、

すべてのヘルプは素晴らしい、THXみんな:)

+0

あなたもモデルコードを置くことができますか? – Sampath

+0

確かに、私は私の電話の上にいるだろうし、本当にすることはできません...しかし、そのまっすぐにドキュメント。 https://docs.efproject.net/en/latest/modeling/relationships.html#many-to-many –

+0

文書にはデータを入力する方法が記載されていません。/ –

答えて

0

大丈夫だろう、これは修正です。

public DbSet<SiteEducator> SiteEducator { get; set; } 

(追記:didntのはdidntのは、念のために何かを複製する、多くのセットアップがそれを複数形ませんでした>普通の多対から生成されたDBのテーブルので、それを複数形)

2)今すぐ最初のクエリの後、データ項目を読み込むために2番目のクエリを実行します。あなたはどこにでもEF今それがためにあるようですdoes notのせずに、それらは

var site = this._dbContext.Sites 
       .Include(x => x.SiteEducators) 
       .Include(x => x.Studies) 
       .FirstOrDefault(x => x.SupervisorToken == key); 


//Dummy query to load the data 
this._dbContext.SiteEducator.Include(x => x.Educator).Where(x => x.SiteId == site.Id).Load(); 

問題は、ドキュメントは、リンクテーブルをマッピングする重要な部分を残しているルートオブジェクトにロードされている知っているだけでなければならないそれらを割り当てるために持っていけませんList内の入れ子になったオブジェクトをロードする方法。

+0

これはあなたのために機能しますか? – Sampath

関連する問題