2012-03-10 28 views
0

私は、外部キーを使ってデータモデル(Entityフレームワーク)を生成しました。それはデータベースから生成されたデータモデルでした。その後、すべてが機能し、ナビゲーションなどが行われました。次に、私は自己追跡エンティティを生成しました。残念ながら私はナビゲーション機能を失った。たとえば、このクエリは現在動作していません。モデルナビゲーションがセルフトラッキングエンティティで動作しないのはなぜですか?

public int GetUserTagsNumber(SessionContainer inputData) { 
     return db.User_t.Single(x => x.pid == inputData.Pid).Tag_t.Count(); 
    } 

セルフトラッキングエンティティとwcfの新機能です。だから、私の質問は次のとおりです:

サービス側でもナビゲーションが機能しないのはなぜですか?

OKの場合は、ナビゲーションプロパティが表示されますか?

答えて

2

あなたの「モデルナビゲーション」あなたが代わりに熱心なロードを使用する必要がありますので、設計によって遅延ロードをサポートしていない遅延ロードと自己追跡エンティティと呼ばれている。

db.User_t.Include("Tag_t").Single(x => x.pid == inputData.Pid).Tag_t.Count(); 

が、これは、クエリを実行するために間違った方法でありますユーザとすべてのタグをデータベースからcountタグだけ読み込む必要があります。直接クエリを使用してデータベースから数え上げるのはどうでしょうか?

db.Tag_t.Where(/* here put condition to find tags used by your user */).Count(); 
+0

ええ、それはデータを取得する効率的な方法ではないことは間違いなく、それは私の問題を説明するための例に過ぎませんでした。ご回答有難うございます。 – nosbor

関連する問題