2009-11-11 35 views
12

मेरे पास कुछ स्तर दूसरे स्तर से आ रहे हैं और यह एक ईएफ ऑब्जेक्ट का प्रतिनिधित्व करता है। जब यह नया है, मैं यह कर:इकाई ढांचे में डिस्कनेक्ट ऑब्जेक्ट अपडेट करें

context.AddToCustomer(mynewobject); 
context.SaveChanges(); 

लेकिन अब मेरा डेटा किसी मौजूदा ऑब्जेक्ट रूपों, इसलिए मैं संदर्भ पता करने के लिए मैं डेटा अपडेट करना चाहते हैं और यह डालने नहीं चाहते हैं।

मैंने 'ApplyPropertyChanges' देखा है, लेकिन मैं इसका उपयोग कैसे नहीं कर सकता। मैं भी देखा है लोगों को यह कर:

Customer existingOne = (from n in context.Customers 
         where n.id = mynewobject.id select n).First() 
existingOne.name = mynewobject.name 
existingOne.address= mynewobject.address 
context.SaveChanges(); 

लेकिन क्योंकि मैं मैन्युअल रूप से सभी रंगमंच की सामग्री की स्थापना की और पहली संपूर्ण वस्तु को पढ़ने के लिए है कि एक छोटे से अजीब लगता है।

उत्तर

4

जबकि मैं सवाल करता हूं कि अद्यतन को "अनुकूलित" करने के लिए भी सार्थक है, फिर भी आप जो भी पूछते हैं वह कर सकते हैं। It's easier in EF 4, लेकिन possible in EF 1this article भी देखें।

public static void AttachAsModified<T>(this ObjectSet<T> objectSet, T entity) where T : class 
{ 
    objectSet.Attach(entity); 
    objectSet.Context.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified); 
} 
+1

बस यह जोड़ने के लिए कि जब आप अपडेट करना चाहते हैं तो EF1 के साथ कुछ और जटिल हो जाएं आर गुण तब स्केलर (जैसा कि आप "ईएफ 1 में संभव" लेख के "चेतावनी" खंड में देखने में सक्षम होने जा रहे हैं)। आप इस प्रश्न के उत्तर के बीच वर्कअराउंड पा सकते हैं http://stackoverflow.com/questions/1612655/entity-framework-updating-with-related-entity –

+0

उत्तर के लिए बहुत बहुत धन्यवाद। कभी-कभी आपको इसे विश्वास करने के लिए इसे देखना पड़ता है। मैं खुद को यह समझ नहीं पाया था, 'ईएफ 1 में संभव' समाधान। – Michel

0

मेरे post निष्पादित करने के लिए इस

0

Employee Info Starter Kit से लिया है, तो आप के रूप में नीचे दिए कोड स्निपेट विचार कर सकते हैं की पर है:

public void UpdateEmployee(Employee updatedEmployee) 
     { 
      //attaching and making ready for parsistance 
      if (updatedEmployee.EntityState == EntityState.Detached) 
       _DatabaseContext.Employees.Attach(updatedEmployee); 
      _DatabaseContext.ObjectStateManager.ChangeObjectState(updatedEmployee, System.Data.EntityState.Modified); 
      _DatabaseContext.SaveChanges(); 
     } 
8

इकाई की रूपरेखा 5 में यह कैसे आप के बारे में जाना है :

 /// <summary> 
     /// Updates an entity 
     /// </summary> 
     /// <param name="input">A entity</param> 
     /// <returns>The updated object</returns> 
     public TEntity Update(TEntity input) 
     { 
      using (var context = GetContext()) 
      { 
       context.Set<TEntity>().Attach(input); 

       var entry = context.ChangeTracker.Entries<TEntity>().FirstOrDefault(e => e.Entity == input); 
       if (entry != null) 
        entry.State = EntityState.Modified; 

       context.SaveChanges(); 
      } 

      return input; 
     } 
संबंधित मुद्दे