Linq обновить много-много отношений - PullRequest
1 голос
/ 10 февраля 2011

Новое в Linq to Entities.Я использую Entity Framework и Linq.В моей базе данных есть что-то похожее на Cars, Users, UserCars, где UserCars содержит идентификатор пользователя и Cars.Стандартные вещи.

EF сопоставляет это с объектами Car и User.

Теперь у пользователя много машин.Через мое приложение я получаю новый список идентификаторов автомобилей.

Мне нужно обновить таблицу UserCars новым списком автомобилей для текущего пользователя.

Итак, что должно произойти в основном, Текущие машины для пользователя удалены, и новый списокидентификаторов автомобилей / идентификаторов пользователей вставлено.

Какой самый простой способ сделать это, используя linq для сущностей?

Ответы [ 2 ]

1 голос
/ 10 февраля 2011

Сущность 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 голосов
/ 27 мая 2014

Вы можете использовать универсальный метод, который может обрабатывать любой тип, который вы передаете:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...