Linq to Entities的新手。我正在使用实体框架和linq。在我的数据库中,我有类似于汽车,用户,UserCars的东西,其中UserCars持有来自用户和汽车的ID。标准的东西。
EF将其映射到Car和User对象。
现在用户目前有很多车。通过我的应用程序,我最终获得了一个新的汽车ID列表。
我需要使用当前用户的新汽车列表更新UserCars表。
基本上需要发生什么,删除用户的当前车辆,并插入新的车辆ID /用户名列表。
使用linq实体最简单的方法是什么?
答案 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