2011-10-27 12 views
2

これは、Net Tierから来るEntityへのLinqの理解を初めて試みたものです。それに苦しんでいるが、その背後にある論理を理解していないなど...。 私が使うのです:Linq to EntityとLoading EntitySets

Entity.EntitySet.Load() 

context.Entity.Include("EntitySet").SingleOrDefault() 

をも理由なく文字列の列挙や種類を取る含まれていますか?

答えて

1

EFでは、レイジー読み込みとEager読み込みという概念があります。

  • 遅延ロードとは、必要なときにデータをロードすることを意味します。これは、Load()メソッド呼び出しによって行われます。
  • Eager loadingは、初期クエリtrough Include(文字列)に読み込むためにいくつかのデータが必要であることを既に知っていることを意味します。

Al tough文字列を取りますが、これを拡張できないわけではありません。

T4は素晴らしいことです。私が作業したプロジェクトでは、エンティティのすべてのナビゲーションプロパティの静的プロパティを含むEntityPropertyクラスを作成しました。この方法では、プロパティ名が変更された場合、少なくともコンパイルエラーが発生します。

さらに進めたい場合は、Lambdaを使用して式ツリーを再配置してからQueryProviderに実行するインクルードメソッドを作成できます。そうすれば、静的な入力が可能になります。

+0

Lazy LoadingとEager loadingについてもっと詳しく読む。私が現在持っている問題(おそらくもう一つの質問)は、エンティティオブジェクト(今は分離されている)がインクルードを使用した後にEntity.EntitySetsを読み取ることができないということです。 Countは初期ロードが10になったところでゼロです。EntitySet値が必要なときはいつでもリロードする必要がありますか? (これが理にかなってほしい)。 – Rob

+0

あなたの作業のコード例を使ってあなたの開始ポストを更新できますか? –

+0

私はウェブページの処理に間違いを犯したと思います。私はPage_Loadの必要がないときにEntitySetをロードしています。長い話ですが、すでにデタッチされたエンティティでエンティティセットの数を確認する最善の方法については、stackoverflowで別の質問をする必要があると思います。 – Rob

0

通常、関連するテーブルの読み込みに使用されます。 Loadは要求されたエンティティを明示的にロードします

MSは実際の制限を認識していないため、文字列が使用されています。 T4がMVCで文字列アクションの問題をどのように解決するのかを並べ替えます。多分、タイピングを強化するために改善/拡張することになります。

+0

今後、より強力なタイピングがサポートされることを心から祈っています。 – Rob