質問: エンティティフレームワークの動作が非常に遅いため、ストアドプロシージャを使用してみましたが、この問題に遭遇しました。 Entity Frameworkでは、エンティティを生成するストアドプロシージャを定義できます。しかし、私のエンティティには、このメソッドを使用するときに入力されていない「ナビゲーションプロパティ」があります。 回避策はありますか?
回答: うまく保存された手順は構成できません。したがって、SPROCを呼び出して、Include()などを使用してEFに同じクエリ内の関係を自動的に設定させる方法はありません。 製品とカテゴリがあるとします。 そしてあなたはProductsを得るためにsprocを持っています: すなわち ``` var products = context.GetProducts(someproductfilter); ``` 結果として得られる製品には、そのカテゴリがロードされません。 ただし、前述の製品のカテゴリを取得する2つ目のストアドプロシージャがあるとします。 すなわち ``` var categories = context.GetCategoriesForProducts(someproductfilter); ``` 2つ目のエンティティがコンテキストに入ると関連エンティティをリンクするEFの機能はリレーションシップの修正と呼ばれ、両方の呼び出しが行われた後、productsの各商品がnull以外のカテゴリを持つことを保証します。 これは理想的ではありません。複数のクエリを実行しているためですが、うまくいきます。 代わりの方法はEFExtensionsを使うことです 。それを書いた人は、一度にもっと多くのデータをロードするsprocsを書くことができるようになりました。 お役に立てれば 乾杯アレックス