web-dev-qa-db-ja.com

EF CoreセカンドレベルThenInclude missworks

これらのモデルを最初に持っていると仮定します:

Methodが1つあるOriginalCodeOriginalCodeが多いMutants Mutantが多いParseSubTrees

今度はMethodでクエリを実行するときに、もう一方をロードしたいと思います。だから私は以下を持っています:

Method targetMethod = dBContext.Methods
            .Include(me => me.OriginalCode)
                .ThenInclude(oc => oc.Mutants)
            .FirstOrDefault(me => me.Id == id);

次のステップは、ParseSubTreeを追加で含めることです。しかし、それは私がそれにアクセスできないことです。次の画像を参照してください。

mu is a list except object reference

問題は「muはオブジェクト参照ではなくリストである」ということです。

私の間違いはどこにありますか?

TG。

22
ConductedClever

これは、コレクションタイプのナビゲーションプロパティのThenIncludeオーバーロードに関するIntellisenseの既知の問題であり、 フォールトトレランスケース#8237でラムダパラメーターのメンバーが不足している場合の完了 Roslyn GitHubの問題によって追跡されます。

修正されるまで、プロパティの名前を入力するだけで、正常にコンパイルされ、期待どおりに動作します。

.ThenInclude(mu => mu.ParseSubTrees) 

更新:EF Coreドキュメントの 複数のレベルを含む セクションで具体的に言及されています:

Visual Studioの現在のバージョンでは、コード補完オプションが正しくないため、コレクションナビゲーションプロパティの後にThenIncludeメソッドを使用すると、正しい式に構文エラーのフラグが付けられる可能性があります。これは、 https://github.com/dotnet/roslyn/issues/8237 で追跡されているIntelliSenseバグの症状です。コードが正しく、正常にコンパイルできる限り、これらの誤った構文エラーを無視しても安全です。

40
Ivan Stoev