तो मेरे ईएफ 4 प्रोजेक्ट में मैंने डेटाकॉन्टेक्स्ट फ़ाइल दोनों के आंशिक वर्गों को खोला है, साथ ही डेटाकॉन्टेक्स्ट द्वारा जेनरेट की गई कुछ तालिका/ऑब्जेक्ट भी खोला है। हालांकि, अगर मैं आंशिक रूप से "उत्पाद" वर्ग खोलता हूं, तो वहां तक (जहां तक मैं बता सकता हूं) उत्पाद से सीधे लिंक को डेटाकॉन्टेक्स्ट क्लास तक पहुंचाता है जो इसे उत्पन्न करता है।डेटा कॉन्टेक्स्ट ऑब्जेक्ट को 'रेफ' पैरामीटर के रूप में पास करने के लिए कोई डाउनसाइड्स?
public partial class Product
{
public DataContext GetContext()
{
return this.DataContext;
// FAILS!!! No connection from 'this' to DataContext
// makes sense because "Product" isn't REALLY derived from DataContext
//...but still, I want this to work!
}
}
लेकिन अंदर आंशिक उत्पाद वर्ग द्वारा, मुझे यकीन है कि सीधे डेटाबेस क्वेरी करने के लिए सक्षम होने के लिए चाहते हैं, और मैं वास्तव में DataContext का सिर्फ एक उदाहरण प्रारंभ और मेरे aspx.cs पेज के लिए उपयोग करने में सक्षम होना चाहते प्रश्न, साथ ही आंशिक कक्षाओं से निष्पादित प्रश्न जिन्हें aspx.cs पृष्ठ से बुलाया जाता है।
तो मेरी समाधान अब तक डेटाबेस के आसपास निकालना पड़ सकता है कि मेरी आंशिक वर्ग के तरीकों के लिए एक 'रेफरी' पैरामीटर के रूप में DataContext के उदाहरण में पारित करने के लिए है।
public partial class Complaint
{
public IEnumerable<Person> GetPByRole(InvestigationRole roleEnum, ref DataContext dbase)
{
var role = dbase.GetRole(roleEnum);
return this.PeopleOnInvestigations
.Where(x => x.InvestigationRoleID == 1)
.Select(x => x.Person);
}
}
तो वहाँ किसी भी आंशिक वर्ग तरीकों कि इस कनेक्शन के माध्यम से डेटाबेस के लिए उपयोग की जरूरत के लिए एक रेफरी पैरामीटर के रूप में मेरी DataContext वस्तु के आसपास पारित करने के लिए एक नकारात्मक पक्ष यह है: यहाँ आंशिक वर्ग है? उपरोक्त में से एक यह है कि एक बार इसे एक रेफरी के रूप में पारित करने के बाद, मैं इन आंशिक कक्षाओं के भीतर से "AddObject()" नई संस्थाएं कर सकता हूं, और एक बार जब मेरे SaveChanges को मेरे asp.cs पृष्ठ पर वापस कॉल किया जाता है, तो सभी परिवर्तन (एएसपीएक्स और आंशिक वर्ग विधियों से) निष्पादित हो जाते हैं।
डाटाकॉन्टेक्स्ट एक संरचना या कक्षा है? –
'डेटाकॉन्टेक्स्ट' LINQ से SQL कक्षा है। क्या आप वाकई एंटिटी फ्रेमवर्क का उपयोग कर रहे हैं? – Steven
वीएस 2010 में यूप ईएफ 4। 'डेटाकॉन्टेक्स्ट' द्वारा मेरा मतलब है 'मेरे डेटा मॉडल से ईएफ द्वारा बनाई गई बड़ी गधा वस्तु', यानी ईडीएमएक्स फ़ाइल। – Graham