2011-01-05 15 views
7

मैं टेम्पलेट posted in this thread का उपयोग कर रहा हूं ताकि SQL सर्वर में SQL सर्वर में कुछ लुकअप टेबल से सी # एनम्स उत्पन्न हो सकें जिसमें मेरा डीएएल शामिल है।कक्षा पुस्तकालय में टी 4 टेम्पलेट्स और कनेक्शन स्ट्रिंग्स

फिलहाल, मेरे पास टेम्पलेट एम्बेडेड टेम्पलेट्स द्वारा उपयोग की जाने वाली कनेक्शन स्ट्रिंग क्लास लाइब्रेरी में फ़ाइल शामिल है। क्या टेम्पलेट को भौतिक पथ को शामिल किए बिना मुख्य प्रोजेक्ट (डब्ल्यूएपी) के web.config से कनेक्शन स्ट्रिंग को पकड़ने का कोई सुविधाजनक तरीका है? या इस दृष्टिकोण के लिए एक बेहतर तरीका है?

संपादित

मैं भी एक SQL CLR विधानसभा जो एक मेज-मान enum सामग्री (जो तब, डेटाबेस में नहीं सी # में परिभाषित किया जाएगा) युक्त फ़ंक्शन बनाने पर विचार किया है, लेकिन मैं मुझे यकीन नहीं है कि प्रदर्शन हिट क्या होगा। चाहे यह महत्वपूर्ण है या नहीं, यह स्पष्ट रूप से एप्लिकेशन-निर्भर होगा, लेकिन अगर मुझे पता है कि यह सबसे अच्छा-बचने वाला दृष्टिकोण है तो मुझे एक क्रोधित पथ को चार्ज करने से नफरत होगी।

उत्तर

10

मैं जब टी -4 टेम्पलेट

<# var path = Host.ResolvePath(@"..\..\www"); #> 

जहां ..\..\www निर्देशिका जहाँ मेरे web.config जहाँ मेरे टी -4 टेम्पलेट निष्पादित किया जा रहा है के संबंध में स्थित है के सापेक्ष पथ है क्रियान्वित web.config से पढ़ने के लिए निम्नलिखित दृष्टिकोण का इस्तेमाल किया

var config = ConfigurationManager.OpenMappedExeConfiguration(
    new ExeConfigurationFileMap { ExeConfigFilename = location [email protected]"\web.config" }, 
    ConfigurationUserLevel.None); 

var connStrings = config.ConnectionStrings; 
+0

मुझे उम्मीद थी कि किसी भी तरह के हार्ड कोड पथ नहीं होना चाहिए, लेकिन ऐसा लगता है कि ऐसा नहीं होने वाला है। धन्यवाद। –

+3

बेशक आपको टेम्पलेट को यह बताने की ज़रूरत है कि यह आपके कॉन्फ़िगरेशन के सापेक्ष कैसे स्थित है, लेकिन इसे हार्डकोडिंग नहीं माना जाता है ... आप अपने समाधान को पागल के रूप में ले जा सकते हैं, जब तक कि परियोजनाओं के बीच सापेक्ष स्थान वही होगा अभी भी काम। –

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