पर कॉल करने के बाद इकाई फ्रेमवर्क परिवर्तन ट्रैकिंग, मैं एफई 6 में परिवर्तन ट्रैकिंग के साथ कुछ समझने के लिए संघर्ष कर रहा हूं।टूलीस्ट()
मेरे पास इसी तरह का कोड है।
public class SomeClass
{
private List<User> _users;
private DAL _dal;
public void ProcessUsers()
{
_users = _dal.GetUsers();
foreach(var u in users)
{
u.user.Comment = "This is a test";
}
_dal.SaveChanges();
}
}
दाल वर्ग एक छोटे से इस तरह दिखता है।
public class DAL
{
...
private DataContext _context; // Assume that this is being newed up in a constructor.
public List GetUsers()
{
return _context.Users.ToList();
}
public void SaveChanges()
{
_context.SaveChanges();
}
}
तो जैसा कि हम ProcessUsers विधि में कोड से देख सकते हैं हम उन की एक सूची है और हम उस सूची को संशोधित कर रहे हैं।
अब मुझे पता है कि यह काम करता है, इसका रास्ता मैं हमेशा यह किया है लेकिन मैं धारणा है कि सूची में वस्तुओं (इस मामले में उपयोगकर्ता) DBSet स्थानीय में इसी वस्तु के लिए एक संदर्भ वापस थे तहत हमेशा था संग्रह।
कुछ विचारों के बाद मुझे यकीन नहीं है कि यह मामला है जैसे कि संदर्भ का निपटारा किया गया है, सूची अभी भी आबादी में है और इसे छेड़छाड़ की जा सकती है (हम इसे कुछ अतिरिक्त काम किए बिना डेटाबेस में वापस धक्का देने की क्षमता को खो देते हैं) इसलिए उस परिप्रेक्ष्य से सूची में आइटम डीबीएसईटी स्थानीय संग्रह से वस्तुओं की प्रतियां होनी चाहिए ... लेकिन यदि ऐसा है तो मुझे यह नहीं होगा कि सूची में किसी ऑब्जेक्ट में हेरफेर करने से ऑब्जेक्ट पर कोई प्रभाव पड़ेगा dbset में यह एक प्रतिलिपि होगी।
सारांश में
प्रश्न क्या होता है जब मैं एक DBSet पर ToList फोन और कैसे इस उदाहरण में ट्रैकिंग काम परिवर्तन होता है? - मुझे पता है कि यह काम करता है, लेकिन मुझे लगता है कि मेरी वर्तमान समझ गलत हो सकती है।
ठीक है, नहीं, यह मेरा मुद्दा है, जो कोड मैंने पोस्ट किया है वह टूटा नहीं है, यह काम करता है। मैं सिर्फ यह समझना चाहता हूं कि डीबीएसईटी पर ToList() क्या करता है, मुझे लगता है कि सूची dbset स्थानीय संग्रह से मूल ऑब्जेक्ट्स के संदर्भों के साथ पॉप्युलेट की गई है। लेकिन जो मैंने इसे पढ़ा है, उससे वे प्रतियां हैं - हालांकि अगर ऐसा होता है तो परिवर्तन ट्रैकिंग काम नहीं करेगी और उपर्युक्त कोड विफल हो जाएगा। – D3vy