Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq更新了许多关系_C#_.net_Linq_Entity Framework_Linq To Entities - Fatal编程技术网

C# Linq更新了许多关系

C# Linq更新了许多关系,c#,.net,linq,entity-framework,linq-to-entities,C#,.net,Linq,Entity Framework,Linq To Entities,新的Linq到实体。我正在使用实体框架和linq。在我的数据库中,我有一些类似于Cars、Users、UserCars的东西,其中UserCars持有User和Cars的ID。标准的东西 EF将其映射到汽车和用户对象 现在一个用户现在有很多车。通过我的应用程序,我得到了一个新的汽车ID列表 我需要用当前用户的新汽车列表更新UserCars表 因此,基本上需要做的是,删除用户的当前车辆,并插入新的车辆ID/用户ID列表 使用linq to实体最简单的方法是什么?用户实体应该有一个Cars属性。您只

新的Linq到实体。我正在使用实体框架和linq。在我的数据库中,我有一些类似于Cars、Users、UserCars的东西,其中UserCars持有User和Cars的ID。标准的东西

EF将其映射到汽车和用户对象

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

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

因此,基本上需要做的是,删除用户的当前车辆,并插入新的车辆ID/用户ID列表


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

用户实体应该有一个
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();

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();

您可以使用泛型方法来处理您传递给它的任何类型:

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

您可以使用泛型方法来处理您传递给它的任何类型:

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

谢谢,我就是想不起来该去哪里。应该工作得很好,谢谢,我只是不知道该去哪里。应该工作完美