可以說我有一個簡單的表,只包含兩列:如何使用LINQ-to-SQL更新表格而不必刪除所有現有記錄?
MailingListUser
- PK ID(INT)
- FK 用戶名(INT)
我有一種稱爲UpdateMailList(IEnumerable
的方法。<int
> userIDs)
我如何在LINQ中爲傳入參數中存在但不存在於數據庫中的用戶標識插入,刪除數據庫中但不再存在於用戶標識中的那些,並保留那些已經在數據庫和用戶ID中的人?
用戶會看到一個複選框列表,當它第一次加載時,會爲已選中的成員選中檢查郵件列表。
用戶可以選中並取消選中不同的用戶並點擊「保存」。一旦發生這種情況,我需要用清單的狀態更新數據庫的狀態。
這是我現在在做什麼:
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表中的所有條目的更好的方法,並重新插入所有用戶ID值?