2013-07-12 5 views
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); 
      } 
     } 
    } 

답변

0

이 관련된 많은 질문이 있습니다, 당신은을 통해 선별 약간의 시간을 할애 할 수 있습니다 일을 간단한 방법이있다 그 동안 해결 방법에 대한 답변을 얻거나보다 유용한 답변을 기다리십시오.

관련 문제