Lets sagen, dass ich eine einfache Tabelle, die nur zwei Spalten enthält:Wie aktualisiere ich eine Tabelle mit LINQ-to-SQL, ohne alle vorhandenen Datensätze löschen zu müssen?
MailingListUser
- PK ID (int)
- FK UserID (int)
Ich habe eine Methode namens UpdateMailList(IEnumerable
.<int
> userIDs)
Wie mache ich in LINQ Einfügungen für die Benutzer-IDs, die im übergebenen Parameter vorhanden sind, aber nicht in der db vorhanden sind, lösche diejenigen, die in der db aber nicht mehr in UserIDs sind, und lasse die diejenigen, die bereits in der Datenbank und Benutzer-IDs allein sind?
Einem Benutzer wird eine Checkbox-Liste angezeigt, und beim ersten Laden werden die vorhandenen Mitglieder für den Maillist ausgewählt.
Der Benutzer kann dann verschiedene Benutzer aktivieren und deaktivieren und auf "Speichern" klicken. Sobald dies passiert, muss ich den Zustand der Datenbank mit dem Status der Checkliste aktualisieren.
Hier ist, was ich tue jetzt:
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();
}
}
}
}
Gibt es einen besseren Weg, als einfach alle Einträge in der Tabelle MailingListUser Löschen und Wiedereinsetzen alle Benutzer-IDs Werte?