2011-02-10 9 views
5

私は、ストレージにEntity Frameworkを使用し、CRUD操作の公開APIを公開するWebサービスを持っています。複数のテーブルのクエリであるエンティティを返すにはどうすればいいですか

Carエンティティと1対多のリレーションシップを持つエンティティがある場合、GetUser(int userId)のWebサービスメソッドで簡単にどのように返すのですか?

public class User{ 
    string Id; 
    IEnumberable<Car> Cars; 
} 

これはエンティティフレームワーク内でデフォルトで機能しますが、これはサーバー側でCarsプロパティを使用するときにCarsプロパティが怠けていると仮定しているためです。

+0

実際 'User'エンティティタイプは異なる何か上記' User'クラスですか? –

答えて

2

エンティティオブジェクトはシリアライズ可能で、自動的にCarsプロパティが取得されます。

ただし、LINQクエリによっては、Carsプロパティが読み込まれている場合と読み込まれていない場合があります。特定のWebメソッド内にCarsプロパティを常にロードする場合は、明示的にプロパティをロードする必要があります。以下は、Carsプロパティをロードするためのいくつかの方法です。

1)LINQクエリでInclude( "Cars")メソッドを使用します。

2)投影を使用します。

3)明示的に、CarsプロパティをUserオブジェクトのインスタンスにロードします。たとえば、すべての

userA.Cars.Load() 
0

私はLINQ-To-SQLを使用して同様の結果を得ました。私にとっては、「ちょうどうまくいきました」。私はそれを試してみて、何が起こるか見る。アイテムに[DataContract]を明示的に定義する必要があるかもしれません。

2

まずあなたがUserエンティティのメタデータ定義で[Include]車をすべきです。また、おそらく車を埋めるためにgetUsers()メソッドを書き直す必要があります。このようなもの。

public IQueryable<User> GetUsers() 
{ 
    return this.ObjectContext.User.Include("Cars"); 
} 

それはすぐに説明するのは容易ではありません、私はthisを訪問することをお勧めします、とthisウェブサイト。

希望が助けます!

関連する問題