2015-02-05 6 views
6

मैं निम्नलिखित मॉडल है:ग्राफडिफ़ का उपयोग कर संबंधित इकाइयों को कैसे अपडेट करें?

public class Customer 
{ 
    public int Id {get; set;} 
    public string Name {get; set;} 
    public int AddressId {get; set;} 
    public virtual Address Address {get; set;} 
    public virtual ICollection<CustomerCategory> Categories {get; set;} 
} 

public class CustomerCategory 
{ 
    public int Id {get; set;} 
    public int CustomerId {get; set;} 
    public int CategoryId {get; set;} 
    public virtual Category Category {get; set;} 
} 

public class Address 
{ 
    public int Id {get; set;} 
    public string Street{get; set;} 
    public virtual PostCode PostCode {get; set;} 
} 

ऊपर से, और GraphDiff का उपयोग कर, मैं इस प्रकार ग्राहक कुल अपडेट करना चाहते हैं:

dbContext.UpdateGraph<Customer>(entity, 
      map => map.AssociatedEntity(x => x.Address) 
         .OwnedCollection(x => x.Categories, with => with.AssociatedEntity(x => x.Category))); 

लेकिन ऊपर कुछ भी अपडेट नहीं हो रहा है !!

इस मामले में ग्राफडिफ़ का उपयोग करने का सही तरीका क्या है?

+0

तुम भी उपयोग कर सकते हैं [ 'EntityGraphOperations'] (https://github.com/फरहाद जबीयेव/एंटिटीग्राफऑपरेशंस) लाइब्रेरी। यह इस्तेमाल में बहुत आसान है। और स्वचालित रूप से सभी इकाइयों के राज्यों को परिभाषित करता है और धाराप्रवाह वाक्यविन्यास का उपयोग करता है। –

उत्तर

6

ग्राफ़डिफ मूल रूप से दो प्रकार के संबंधों को अलग करता है: स्वामित्व और संबंधित

स्वामित्व को "इसका एक हिस्सा होने" के रूप में व्याख्या किया जा सकता है जिसका अर्थ है कि स्वामित्व वाली किसी भी चीज़ को उसके मालिक के साथ डाला/अपडेट/हटा दिया जाएगा।

ग्राफ़डिफ़ द्वारा संचालित अन्य प्रकार का संबंध संबद्ध है जिसका अर्थ है कि ग्राफ को अद्यतन करते समय केवल संबंधित संबंधों को ग्राफडिफ़ द्वारा ही संबंधित संबंधों में बदला जाता है।

जब आप AssociatedEntity विधि का उपयोग करते हैं, तो बच्चे इकाई का राज्य कुल योग का हिस्सा नहीं है, दूसरे शब्दों में, आपके द्वारा किए गए परिवर्तनों को बाल इकाई पर सहेजा नहीं जाएगा, केवल यह माता-पिता नेविगेशन गुण अपडेट करेगा।

उपयोग OwnedEntity विधि अगर आप बच्चे को इकाई से अधिक था परिवर्तन सहेजने के लिए मैं आप इस कोशिश का सुझाव चाहते हैं, इसलिए,:

dbContext.UpdateGraph<Customer>(entity, map => map.OwnedEntity(x => x.Address) 
                .OwnedCollection(x => x.Categories, with => with.OwnedEntity(x => x.Category))); 
dbContext.SaveChanges(); 
संबंधित मुद्दे

 संबंधित मुद्दे