2008-09-17 10 views
9

यदि मेरे पास 'उपयोगकर्ता' नामक मेरे डेटाबेस में एक टेबल है, तो पहले से घोषित खाली कन्स्ट्रक्टर के साथ 'उपयोगकर्ता' नामक LINQtoSQL द्वारा उत्पन्न एक कक्षा होगी।LINQtoSQL द्वारा उत्पन्न कक्षा में खाली कन्स्ट्रक्टर को ओवरराइड करने का कोई तरीका है?

यदि मैं इस कन्स्ट्रक्टर को ओवरराइड करना चाहता हूं और अपना खुद का तर्क जोड़ना चाहता हूं तो सबसे अच्छा अभ्यास क्या है?

उत्तर

11

डिफ़ॉल्ट निर्माता जो ओ/आर डिजाइनर द्वारा उत्पन्न होता है, एक कॉल आंशिक समारोह OnCreate कहा जाता है - तो सबसे अच्छा अभ्यास डिफ़ॉल्ट निर्माता ओवरराइड करने के लिए, लेकिन इसके बजाय लागू आंशिक समारोह MyDataClasses.cs में OnCreated आइटम प्रारंभ करने में नहीं है:

partial void OnCreated() 
{ 
    Name = ""; 
} 

यदि आप अन्य रचनाकारों को कार्यान्वित कर रहे हैं, तो हमेशा डिफॉल्ट कन्स्ट्रक्टर को कॉल करने के लिए सावधानी बरतें ताकि कक्षाएं ठीक से शुरू हो जाएंगी - उदाहरण के लिए डिफॉल्ट कन्स्ट्रक्टर में इकाईसेट (रिलेशनशिप) का निर्माण किया जाता है।

3

ऐसा लगता है कि आप खाली कन्स्ट्रक्टर को ओवरराइड कर सकते हैं। इसके बजाय, मैं एक ऐसी विधि तैयार करूंगा जो आपको खाली कन्स्ट्रक्टर में आवश्यक कार्यक्षमता करता है और नई ऑब्जेक्ट देता है।

// Add new partial class to extend functionality 
public partial class User { 

    // Add additional constructor 
    public User(int id) { 
    ID = id; 
    } 

    // Add static method to initialize new object 
    public User GetNewUser() { 
    // functionality 
    User user = new User(); 
    user.Name = "NewName"; 
    return user; 
    } 
} 
तो कहीं अपने कोड में

, डिफ़ॉल्ट खाली निर्माता उपयोग करने के बजाय, निम्न में से एक कार्य करें:

User user1 = new User(1); 
User user2 = User.GetNewUser(); 
1

डेटाकॉन्टेक्स्ट कनेक्शन संपत्ति को 'कोई नहीं' पर सेट करना मेरे लिए काम करता है। नीचे कदम।

डीबीएमएल खोलें -> राइट क्लिक गुण -> डेटाकॉन्टेक्स्ट गुणों में कनेक्शन को 'कोई नहीं' में अपडेट करें। यह जेनरेट कोड फ़ाइल से खाली कन्स्ट्रक्टर को हटा देगा। ->

Partial Class MyDataContext  
    Public Sub New()    
     MyBase.New(ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString, mappingSource) 
     OnCreated()  
    End Sub  
End Class 
जैसे खाली कन्स्ट्रक्टर के साथ डेटाकॉन्टेक्स्ट के लिए एक नया आंशिक वर्ग बनाएं
संबंधित मुद्दे

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