Допустим, у меня есть простая таблица, которая содержит только два столбца:
MailingListUser
- PK ID (int)
- FK UserID (int)
У меня есть метод с именем UpdateMailList(IEnumerable<code><int
> userIDs) .
Как в LINQ сделать вставки для идентификаторов пользователей, которые присутствуют в переданном параметре in, но не существуют в базе данных, удалить те, которые находятся в базе данных, но больше не в идентификаторах пользователей, и оставить те, которые уже есть только в базе данных и идентификаторах пользователей?
Пользователю предоставляется список флажков, и при первой загрузке он проверяет существующие элементы, выбранные для списка рассылки.
Пользователь может затем проверять и снимать флажки с разных пользователей и нажимать «Сохранить». Как только это произойдет, мне нужно обновить состояние базы данных с помощью состояния контрольного списка.
Вот что я сейчас делаю:
public void UpdateMailList(IEnumerable<int> userIDs)
{
using (MainDataContext db = new MainDataContext())
{
var existingUsers = (from a in db.MailListUsers
select a);
db.MailListUsers.DeleteAllOnSubmit(existingUsers);
db.SubmitChanges();
var newUsers = (from n in userIDs
select new MailListUser
{
UserID = n
});
db.MailListUsers.InsertAllOnSubmit(newUsers);
db.SubmitChanges();
}
}
}
}
Есть ли лучший способ, чем просто удалить все записи в таблице MailingListUser и заново вставить все значения userIDs?