One Include後に複数のThenInclludeナビゲーション・プロップを実行する方法

entity-framework-core

質問

TestTypeの場合、Navigation Props SchoolclassとSubjectの両方を含めることにしました。

私はできる:

.Include(t => t.TestType)
 .ThenInclude(x => x.Subject)

しかし:

.Include(t => t.TestType)
.ThenInclude(x => x.Subject)
.ThenInclude(x => x.Schoolclass)

私はちょっとした工夫をしましたが、うまくいきました。

私はTestTypeを2回含む...

var test = await context.Tests.Where(t => t.SchoolyearId == schoolyearId)
                                          .Include(t => t.TestType)
                                          .ThenInclude(x => x.Subject)
                                           .Include(t => t.TestType)
                                          .ThenInclude(x => x.Schoolclass)
                                           .AsNoTracking()
                                          .ToListAsync();

それは正式なアプローチですか、それとも良い方法ですか?

更新

   public class TestType
    {
        public TestType()
        {
            Tests = new HashSet<Test>();
        }

        public int Id { get; set; }
        public string Name { get; set; }
        public int Weight { get; set; }
        public ISet<Test> Tests { get; set; }
        public Schoolyear Schoolyear { get; set; }  
        public Schoolclass Schoolclass { get; set; }   
        public Subject Subject { get; set; }
        public int SchoolyearId { get; set; }
    }

人気のある回答

あなたが前に書くのが最善の方法です.2つの.Include(t => t.TestType)

var test = await context.Tests.Where(t => t.SchoolyearId == schoolyearId)
                                      .Include(t => t.TestType)
                                      .ThenInclude(x => x.Subject)
                                       .Include(t => t.TestType)
                                      .ThenInclude(x => x.Schoolclass)
                                       .AsNoTracking()
                                      .ToListAsync();

SQLプロファイラでクエリ結果が表示された場合、そのクエリは、TestTypeへのインクルードを繰り返さずにそのふりをしていることになります(そのテーブルとの結合は1つだけです)

あなたはそれを行う別の方法がありますが、私は前の方法を好む!

.Include("TestType.Subject") 
.Include("TestType.Schoolclass")  


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ