2
5 개의 엔티티 프레임 워크 모델이 있으며 모두 서로 관계가 있습니다. 새 데이터베이스를 데이터베이스에 게시하는 것은 간단하지만 PUT 요청을 통해 업데이트하려고하면 정말 엉망이됩니다. 수동으로 각 컬렉션에 들어가서 변경중인 내용을 업데이트해야합니다. 기존 Entity Framework 객체에 대한 PUT 요청
private void updateRelation(Dealer dealer)
{
var dealerOld = db.Dealers.Include(d => d.Contacts).Single(d => d.DealerID == dealer.DealerID);
var contactsNew = dealer.Contacts;
List<int> contactIds = new List<int>();
if (dealer.DealerGroup == null ||
dealerOld.DealerGroup == null ||
dealer.DealerGroup.DealerGroupID != dealerOld.DealerGroup.DealerGroupID)
{
if (dealerOld.DealerGroup != null)
{
DealerGroup d = db.DealerGroups.Find(dealerOld.DealerGroupID);
d.Dealers.Remove(dealerOld);
}
}
updateManyToMany(dealer,dealerOld,contactIds,contactsNew);
}
private void updateManyToMany(Dealer dealer, Dealer dealerOld, List<int> contactIds, ICollection<Contact> contactsNew )
{
foreach (var contact in contactsNew)
{
contactIds.Add(contact.ContactID);
}
foreach (var contact in dealerOld.Contacts.ToList())
{
if (!contactIds.Contains(contact.ContactID))
{
dealerOld.Contacts.Remove(contact);
}
}
foreach (int contactId in contactIds)
{
if (!dealerOld.Contacts.Any(c => c.ContactID == contactId))
{
var contact = new Contact() { ContactID = contactId };
dealerOld.Contacts.Add(contact);
db.Contacts.Attach(contact);
}
}
}
이