2011-02-10 2 views
1

Linq to Entitiesの新機能です。私はエンティティフレームワークとlinqを使用しています。私のdbには、User、Cars、User、UserCarsのようなものがありますが、UserCarsはUserとCarsのIDを保持しています。標準的なもの。Linqは多数の関係を更新します

EFはこれをCarオブジェクトとUserオブジェクトにマップします。

現在、ユーザーは現在多くの車を所有しています。私のアプリケーションを通して、私は新しいカーIDのリストで終わります。

現在のユーザーの新しい車のリストでUserCarsテーブルを更新する必要があります。

基本的に何が起こる必要があるのか​​、ユーザーの現在の車は削除され、新しいcar id/useridのリストが挿入されます。

エンティティにlinqを使用してこれを行う最も簡単な方法は何ですか?

答えて

1

Userエンティティは、Carsプロパティを持つ必要があります。あなたは今まであなたがそれを渡す入力する内容扱うことができる汎用的な方法を使用することができます

User myUser = context.Users.First(); 
var carCollection = context.Cars.Where(c => carIdCollection.Contains(c.Id)); 
myUser.Cars.Clear(); 

foreach(Car car in carCollection) 
    myUser.Cars.Add(car); 

... 
context.SaveChanges(); 
+0

おかげさまで、どこにでもmy.headが届きませんでした。完璧に動作するはずです – stephen776

0

:あなたは、コレクションとすなわち多少のように、新しい状態を反映するために新しい車を追加することだけでクリアでき

Protected Sub UpdateManyToMany(Of T As Class)(database as SomeEntities, collection As ICollection(Of T), idList As List(Of Integer)) 
'update a many to many collection given a list of key IDs 
    collection.Clear() 
    Dim source = database.Set(Of T)() 

    If idList IsNot Nothing Then 
    For Each i As Integer In idList 
     Dim record = source.Find(i) 
     collection.Add(record) 
    Next 
    End If 
End Sub 
関連する問題