Linq更新了许多关系

时间:2011-02-10 00:41:50

标签: c# .net linq entity-framework linq-to-entities

Linq to Entities的新手。我正在使用实体框架和linq。在我的数据库中,我有类似于汽车,用户,UserCars的东西,其中UserCars持有来自用户和汽车的ID。标准的东西。

EF将其映射到Car和User对象。

现在用户目前有很多车。通过我的应用程序,我最终获得了一个新的汽车ID列表。

我需要使用当前用户的新汽车列表更新UserCars表。

基本上需要发生什么,删除用户的当前车辆,并插入新的车辆ID /用户名列表。

使用linq实体最简单的方法是什么?

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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