मेरे पास एक खिड़की है जो ग्राहक जानकारी दिखाती है। जब खिड़की लोड हो जाती है, तो मैं कन्स्ट्रक्टर से LoadCustomer()
विधि को कॉल करता हूं जो डेटाबेस से ग्राहक जानकारी को असीमित रूप से लोड करता है, जो CurrentCustomer
संपत्ति सेट करता है। और उसके बाद यूआई अपडेट किया गया है क्योंकि यह CurrentCustomer
से जुड़ा हुआ है।एसिंक कॉल अंदर पहुंचने वाला है - क्या यह अच्छा अभ्यास है?
private void LoadCustomer(Guid customerID)
{
var customerContext = new CustomerContext();
var customerQuery = customerContext.GetCustomersQuery()
.Where(e => e.CustomerID == customerID);
customerContext.Load(customerQuery,
loadOperation =>
{
CurrentCustomer = loadOperation.Entities.SingleOrDefault();
}, null);
}
वरिष्ठ प्रोग्रामर मुझे बताया गया है कि यह CurrentCustomer के प्राप्त एक्सेसर अंदर इस तर्क डाल करने के लिए बेहतर है, क्योंकि तब
- डेटाबेस के लिए कॉल आलसी लोड हो रहा है का उपयोग करेगा और
- रिफैक्टरिंग होगा आसान हो।
क्या संपत्ति के एक्सेसर के अंदर एसिंक डेटाबेस कॉल डालना अच्छा अभ्यास है?
लोड * गेटटर * में नहीं हैं। साइड इफेक्ट्स कोड को पढ़ने की उम्मीद नहीं की जाएगी। यह अधिक संभावना है कि संदर्भ चारों ओर ले जाया जाएगा, इसलिए इसे सभी पठनीय रखने के लिए सबसे अच्छा है। कभी-कभी * सीनियर * का मतलब है * पुराना *। :) –