1
我有一個像下面使用EF的結構:實體框架:最好的方式來更新相關表
「事件」有很多個「客人」
假設Event.Guests有4個客戶元素,該ID的1,2,3,4 我想更新Event.Guests讓客人使用ID的3,4,5(如果Guest 5不存在,我想創建它)。
什麼是最有效的方式從事件中刪除現有的客人,並添加新的?
這是我在做什麼現在:
var newGuests = new List<Guest>();
var existingGuests = @event.Guests.ToList();
// GetNewGuestsIds will return the new guests list (3,4,5)
foreach (var guestId in GetNewGuestsIds())
{
Guest guest = existingGuests.FirstOrDefault(eg => eg.Id == guestId);
if (guest == null)
{
guest = db.Guests.CreateObject();
// fill guest data here
}
newGuests.Add(guest);
}
foreach (var existingGuest in existingGuests)
{
// Remove the existing element from the list to add
var removed = newGuests.RemoveAll(g => g.Id == existingGuest.Id);
if (removed == 0) // The existing host is not on the list to add, delete it
{
@event.EventHosts.Remove(existingGuest);
}
}
foreach (var guest in newGuests)
{
@event.Guests.Add(guest);
}
但我認爲這可能會提高......我只是不知道怎麼辦。
謝謝!