2011-02-10 77 views
1

Linq to Entities新增功能。我正在使用實體框架和LINQ。在我的數據庫中,我有類似於Cars,Users,UserCars的地方,其中UserCars持有用戶和汽車的ID。標準的東西。Linq更新多對多關係

EF將其映射到Car和User對象。

現在用戶目前有很多車。通過我的申請,我最終得到了一個新的車輛ID列表。

我需要用當前用戶的汽車新列表更新UserCars表。

所以基本上需要做什麼,刪除用戶當前的汽車,插入汽車ID /用戶ID的新列表。

什麼是最簡單的方法去使用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

感謝只是不能讓我的頭在哪裏。應該工作完美 – stephen776 2011-02-10 01:58:38

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