2013-02-23 12 views
22
[HttpPost] 
public ActionResult Edit(Movie movie) 
{ 
    if (ModelState.IsValid) 
    { 
     db.Entry(movie).State = EntityState.Modified; 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 
    return View(movie); 
} 

यह क्रिया एक मूवी मॉडल प्राप्त करती है और इसे डेटाबेस में अद्यतन करती है।
लेकिन मैं यह नहीं समझ सकता कि कैसे।
movie ऑब्जेक्ट डीबी से जुड़ा नहीं है, तो इकाई ढांचे को कैसे पता चलता है कि डीबी में कौन सी पंक्ति को अद्यतन किया जाना चाहिए?DBContext.Entry क्या करता है?

मुझे यकीन है कि प्रवेश विधि के साथ कुछ करने के लिए कुछ है, लेकिन मुझे वास्तव में यह नहीं पता कि यह विधि क्या करती है। मैंने पढ़ा है कि यह जानकारी साबित करता है लेकिन मुझे समझ में नहीं आ रहा है कि एक प्रविष्टि के State को बदलकर यह DBContext द्वारा संलग्न और ट्रैक किया जाता है।

उत्तर

21

यह सिर्फ DataContext करने के लिए इकाई देता अन्यथा आप प्राथमिक कुंजी का उपयोग कर इकाई के लिए खोज और फिर मान संपादित करें और इसे बचाने के लिए होगा ..

आप एक इकाई आप जानते हैं कि पहले से ही मौजूद है, तो डेटाबेस में, लेकिन कौन से परिवर्तन किए जा सकते हैं, तो आप इकाई को संलग्न करने के लिए संदर्भ बता सकते हैं और इसके राज्य को संशोधित कर सकते हैं। http://msdn.microsoft.com/en-US/data/jj592676

+0

लेकिन इसके लिए आपके पास [अटैच] है (http://msdn.microsoft.com/en-us/library/system.data.entity.dbset.attach (v = vs.103) .aspx) तरीका। –

+0

समझ गया। धन्यवाद। :) –

+0

तो यह विधि जानता है कि इकाई वर्ग के कौन से गुण कुंजी हैं और फिर आंतरिक रूप से इकाई को अपनी कुंजी (ओं) से प्राप्त करने के लिए एक खोज तैयार कर सकते हैं और इसे संलग्न कर सकते हैं। सही? यदि हां, तो यह कमाल है। –

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