質問

私は現在、Linq-To-Entitiesについてもう少し学んでいます。特に、現在は熱心で遅延読み込みについてです。

proxy.User.Include("Role").First(u => u.UserId == userId)

これは、ユーザーが持つロールとともにユーザーをロードすることになっています。問題がありますが、質問もあります。 L2Eについて学ぶために作成された単純なモデルです

私は、これが物事を強くタイプするように設計されているという印象を受けていました。なぜ「ロール」を書かなければならないのですか?テーブルの名前を変更しても、コンパイルエラーは発生しないようです...

私のエラーはこれです:

The specified type member 'Roles' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

以下の解決策により、コードを記述できるようになりました。

proxy.User.Include(u => u.Role).First(u => u.UserId == userId)

どれほど優れているか

役に立ちましたか?

解決

  1. Includeは、積極的なロードのヒントであり、積極的なロードを強制しません。
  2. インクルードによって熱心にロードされたと思われるものを参照する前に、IsLoadedプロパティを常に確認してください。
  3. 厳密に型指定されたオブジェクトをincludeステートメントに入れる方法はありますが、Entity Frameworkですぐにこの問題を解決できる方法はありません。 Googleのようなもの:Entity Framework ObjectQueryExtension Include
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top