Entity Framework 3.5 - 子をロードする方法

.net-3.5 entity-framework linq

質問

私の質問はおそらく非常に単純です、あなたはどのように子供/サブクラスをロードしますか。コンテキストに子をロードさせるために見つけることができる "ロード"などはありません。

コンテキストクラスはObjectContext型です。下記を参照してください。

public partial class RTIPricingEntities : global::System.Data.Objects.ObjectContext

製品

Product.ModifiedByUser(製品を読み込むときにこのクラスを読み込む方法は?)

Product.Category(商品を読み込むときにカテゴリを読み込む方法は?)

人気のある回答

あなたは負荷を熱望することができます。

var q = from p in Context.Products
                  .Include("ModifiedByUser")
                  .Include("Category")
        select p;

...またはプロジェクト

var q = from p in Context.Products
        select new 
        {
           Id = p.Id,
           Name = p.Name
           ModifiedByUserName = p.ModifiedByUser.Name,
           CategoryName = p.Category.Name
        }

射影の利点は、参照されているすべてのエンティティの全体ではなく、必要なデータだけを取得できることです。積極的な読み込みの利点は、返されたエンティティが変更の追跡を行うことです。当面の問題に適したテクニックを選択してください。

更新

はい、あなたがRIAサービスを使用していることを言及すること重要です。私はあなたもクライアント内で働いていると思います。これは物事を完全に異なるものにます。

RIAサービスでは、初期ロードで必要なエンティティのグラフ全体を確実に返すようにすることが非常に重要です。エンティティに対して.Load()のようなものを呼び出すことは望ましくありません。これは、サーバーにとってもう1つの問題であり、パフォーマンスにとっては悪いことです。たとえば、Silverlightクライアントに接続していて、サーバーからインスタンスのリストを要求したときに、それらに関連するプロパティがまだ具体化されていない場合、それはすでに遅すぎます。また、IncludeはSilverlightクライアント内では機能しません。したがって、RIAサービスには、正しい完全マテリアライズドオブジェクトグラフを最初に返すために使用できるサーバーサイドツールがあります。

代わりにあなたがする必要があるのはあなたのRIAサービスサーバーの中でIncludeAttributeを使うことです。 [Include]を使ってエンティティモデルを装飾するための "相棒"メタデータクラスを作成できます。 RIAサービス概要文書のセクション4.8に例があります。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ