2012-09-11 12 views
8

एक बात मुझे अभी पागल कर रही है।ईएफ 5.0 और गतिशील कनेक्शन स्ट्रिंग?

मेरा (डेटाबेस-प्रथम) ईएफ-मॉडल को गतिशील कनेक्शन स्ट्रिंग की आवश्यकता होती है (सर्वर का आईपी-एड्रेस थोड़ी देर में बदल सकता है)।

तो पुराने ईएफ-संस्करणों में आप कन्स्ट्रक्टर के माध्यम से कनेक्शन-स्ट्रिंग पास कर सकते हैं, लेकिन ऐसा लगता है कि यह 5.0 में संभव नहीं है।

जो मैंने अभी तक पढ़ा है, आप अपना डेटामैप्लेट बदल सकते हैं, लेकिन जब भी आप अपना मॉडल इत्यादि उत्पन्न करेंगे, तो इसे ओवरराइट किया जाएगा, इसलिए ऐसा करने का सबसे अच्छा तरीका नहीं है।

एक और बात SQLConnectionFactory है, लेकिन यह (Database.DefaultConnectionFactory = new SqlConnectionFactory(...) पर पूरी तरह से अनदेखा प्रतीत नहीं होता है)।

इसके लिए सही दृष्टिकोण क्या होगा?

+0

मैं नहीं मानता कि यह विशेष रूप से एक EF5 समस्या है, बल्कि यह है कि डिजाइनर एक DbContext व्युत्पन्न वर्ग है कि इस के लिए एक निर्माता भी शामिल उत्पन्न नहीं करता है। आप जो कन्स्ट्रक्टर चाहते हैं उसे उत्पन्न करने के लिए आपको टी 4 टेम्पलेट को संशोधित करने में सक्षम होना चाहिए। –

+0

क्या आपने इस डीबीकॉन्टेक्स्ट कॉन्स्ट्रक्टर http://msdn.microsoft.com/en-us/library/gg679467%28v=vs.103%29.aspx को आजमाया है? यह ईएफ 5 में समर्थित है। –

+0

@ petro.sidlovskyy - उनकी समस्या यह है कि डिजाइनर जेनरेट किए गए संदर्भ वर्ग में उस निर्माता शामिल नहीं हैं, इसलिए वह संदर्भ वर्ग को संशोधित किए बिना इसका उपयोग नहीं कर सकता है, लेकिन जब भी वह डीबी से डेटा को पुन: उत्पन्न करता है तो यह ओवरराइट हो जाएगा। –

उत्तर

18

पेट्रो उल्लेख के रूप में, आप अपने इच्छित निर्माता के साथ आंशिक कक्षा बना सकते हैं।

उदाहरण के लिए:

public partial class MyContext : DbContext 
{ 
    public MyContext(string connectionString) : base(connectionString) {} 
} 
+0

आपको बहुत बहुत धन्यवाद, यह काम करता है और मेरे लिए एक आदर्श समाधान है! :) –

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