web-dev-qa-db-ja.com

インクルードパス式は、type.in eager loadingで定義されたナビゲーションプロパティを参照する必要があります

私はこのような匿名型を含めようとします:incomelistCompanyTitleに加えてすべてのPeriodTypeName属性が必要です)

 var incomeList = ctx.IncomeLists.Include(i => new
                {
                    CompanyTitle = i.CompanyId.ToString() + "/" + i.Company.CompanyName,
                    PeriodTypeName = i.ListPeriods.Select(lp => lp.PeriodType.PeriodTypeName)
                }).ToList()

このような私のモデルセクション: enter image description here

しかし、私は次の例外が発生します:

インクルードパス式は、タイプで定義されたナビゲーションプロパティを参照する必要があります。参照ナビゲーションプロパティには点線のパスを使用し、コレクションナビゲーションプロパティには選択演算子を使用します。パラメーター名:パス

結果はGridviewのデータソースになります。

14

Includeを使用してこのようなデータを選択することはできません。 Includeは、関連データをロードするために使用されます。 Includeを使用してエンティティをロードし、必要なものを選択する必要があります。 。ToString()CompanyIdから削除することを忘れないでください。 EFはあなたのためにそれを行います。クエリは次のようになります。

var incomeList = ctx.IncomeLists
    .Include(i => i.Company)
    .Include(i => i.ListPeriods.Select(lp => lp.PeriodType))
    .Select(i => new 
    {
        CompanyTitle =  i.CompanyId + "/" + i.Company.CompanyName,
        PeriodTypeNames = i.ListPeriods.Select(lp => lp.PeriodType.PeriodTypeName)
    })
    .ToList();
21
Adil Mammadov