2011-01-18 20 views
13

मैं निम्नलिखित तरीके से इकाई की रूपरेखा का उपयोग कर एक POCO वस्तु अद्यतन करने के लिए कोशिश कर रहा हूँ अद्यतन देते हैं। कोई त्रुटि नहीं फेंक दी गई है, यह सिर्फ डेटाबेस में मान अद्यतन नहीं कर रहा है।इकाई की रूपरेखा काम नहीं कर रहा

मैंने कोशिश की:

context.Jobs.AttachTo("Jobs", job); 
context.SaveChanges(); 

कुछ भी नहीं है गलतियों को सुधारने, अभी भी कोई त्रुटि और कोई अद्यतन।

उत्तर

19

ObjectState को बदलने के बारे में क्या?

context.ObjectStateManager.ChangeObjectState(job, System.Data.EntityState.Modified); 

एमएसडीएन से: ObjectStateManager.ChangeObjectState Method

+6

ईएफ 6 के संदर्भ के साथ, इस उत्तर को चालू रखने की भावना में। प्रवेश (नौकरी) .State = System.Data.Entity.EntityState.Modified – matto0

+1

ईएफ का एपीआई ईंट की दीवार से बात करने जैसा है। –

2

मुझे लगता है कि आप अलग वस्तु के साथ काम कर रहे हैं - this answer का दूसरा भाग देखें।

1

आप, जच नीचे

var job = context.Jobs.Where(p => p.Id == id).FirstOrDefault(); 
//apply your changes 
job.Title = "XXXX"; 
///.... 
context.SaveChanges(); 
+0

var job = context.Jobs.SingleOrDefault (p => p.Id == id); – jolySoft

0

झलकी एक और कारण यह है कि यह काम नहीं हो सकता है जब इसी Jobs.cs फ़ाइल प्रतिबद्ध लेकिन .edmx किया गया है नौकरी पाने के लिए पहले तो आप सफलतापूर्वक इसे अद्यतन सकता है फ़ाइल नहीं है इसका मतलब है कि संपत्ति मौजूद है लेकिन मैप नहीं है और इसलिए ईएफ वस्तु को संशोधित नहीं करता है। उदाहरण के लिए:

... 
using (var dao = new DbContext()) 
{ 
    dao.Jobs.Attach(job); 
    job.SomeProperty = 1234; // SomeProperty exists but is not in the .edmx 
    dao.SaveChanges(); 
} 

अगर SomeProperty Jobs.cs में मौजूद है, लेकिन .edmx फ़ाइल से लापता, इस कोड संकलन और एक संकेत के बिना निष्पादित कुछ भी गलत नहीं है, लेकिन SomeProperty डाटाबेस में अपडेट नहीं किया जाएगा कि होगा। मुझे यह खोजने के लिए एक दिन का सबसे अच्छा हिस्सा ले लिया।

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