2013-03-29 7 views
6

तो मैं कुछ समय के लिए इकाई फ्रेमवर्क का उपयोग कर रहा हूं (मेरे मुख्य प्रोजेक्ट के लिए v5 पर)। एक सवाल जो मैंने हमेशा किया है, लेकिन कभी भी एक निश्चित उत्तर नहीं मिल सका - क्या ईएफ के सही तरीके से काम करने के लिए मेरे कनेक्शन स्ट्रिंग का नाम मेरे डीबीकॉन्टेक्स्ट के नाम से मेल खाना पड़ेगा?कनेक्शन स्ट्रिंग नाम और इकाई फ्रेमवर्क

ऐसा प्रतीत होता है (और मैंने कभी भी कुछ अलग नहीं किया है), लेकिन मैं काम करने के लिए ईएफ के लिए अपने वेब.कॉन्फिग में "जादू स्ट्रिंग" प्रदान नहीं करना चाहूंगा। यह बेहतर होगा, मेरी राय में, डिफ़ॉल्ट कनेक्शन को नाम के रूप में रखने के लिए और ईएफ किसी अन्य तरीके से जुड़ता है।

यहाँ मेरी Web.config से संदर्भ (कुछ नाम बदल) है:

<connectionStrings> 
    <add name="MyContext" connectionString="Data Source=|DataDirectory|MyDatabase.sdf" providerName="System.Data.SqlServerCe.4.0" /> 
</connectionStrings> 

... और ... आगे नीचे ...

<entityFramework> 
    <contexts> 
     <context type="MyProject.Path.To.MyContext, MyProject.Path.To, Version=1.0.0.0, Culture=neutral"> 
     <databaseInitializer type="MyProject.Path.To.MyInitializer, MyProject" /> 
     </context> 
    </contexts> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="v11.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
</entityFramework> 

किसी भी अंतर्दृष्टि की सराहना की जाएगी ।

+0

डिफ़ॉल्ट सम्मेलन है यही कारण है, कनेक्शन स्ट्रिंग अपने 'DbContext' वर्ग के रूप में एक ही नाम दिया है उपयोग करने के लिए। – jrummell

उत्तर

11

एक सवाल मैं हमेशा पड़ा है, लेकिन एक निश्चित जवाब देने के लिए कभी नहीं मिल सकता है - मेरी कनेक्शन स्ट्रिंग के नाम क्रम एफई सही ढंग से काम करने के लिए मेरी DbContext की नाम से मिलान करने की है करता है?

नहीं, आप DbContext के लिए आधार निर्माता में एक कनेक्शन स्ट्रिंग नाम पारित कर सकते हैं, अर्थात

public class MyDbContext : DbContext 
{ 
    public MyDbContext() 
     : base("MyConnectionStringName") 
    { 

    } 
} 

वहाँ भी यदि आप कनेक्शन अपने आप को बनाने के लिए पसंद करते हैं कि एक DbConnection तर्क लेता DbContext पर एक निर्माता है।

अंत में, आप IDbConnectionFactory का अपना कार्यान्वयन प्रदान कर सकते हैं और इसे LocalDbConnectionFactory के बजाय app.config में निर्दिष्ट एक के बजाय इसका उपयोग कर सकते हैं। आप config में यह बदल सकते हैं या आप रनटाइम पर यह सेट इस प्रकार है:

Database.DefaultConnectionFactory = new MyCustomConnectionFactory();

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