我使用EF 4.3和代碼優先的方法。實體框架4.3代碼優先數據庫命名
隨着EF 4.3,它建議使用新<entityFramework />
配置部分初始化的上下文的連接字符串。
我做了一些網上搜索,我似乎無法找到使用此方法用於初始化與配置的數據庫名稱的連接的便捷方式。
例如,讓說,我在我的應用程序中的MyDBContext
實體。 我希望它用在連接字符串中指定的數據庫名稱從Initial Catalog=MyDB;
從EF 4.1使用老方法,我可以通過將連接字符串在配置文件中的<connectionstring>
部分做到這一點沒有問題。
<add name="MyDBContext" connectionString="Data Source=.\SQLEXPRESS; Initial Catalog=MyDB; Integrated Security=True; MultipleActiveResultSets=True" providerName="System.Data.SqlClient"/>
如果我想使用EF 4.3支持的較新的configsection,我沒有辦法在連接字符串中指定數據庫名稱。我嘗試了以下,但Initial Catalog
屬性被忽略。我相信這是有充分的理由忽略,因爲整個事情是一個DefaultConnectionFactory
可能由多種情況下在我的應用
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="Data Source=.\SQLEXPRESS; Initial Catalog=MyDB; Integrated Security=True; MultipleActiveResultSets=True" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
我codefirst方法創造與使用的結果,這是MyNamespace.MyDBContext
默認的數據庫名稱中使用
據我所知,有一種方法可以通過將一個值傳遞給基於DBContext
對象的nameOrConnectionString
參數來覆蓋此默認命名。
所以,我可以做這樣的事情:
public MyDBContext() : base("MyDB") { }
但是,如果我採取這種做法我結束了硬編碼DB名字爲我的應用程序和個人而言,我不喜歡這樣。
我想知道是否有任何方法可以方便地從Web.config
文件中爲我的數據庫上下文傳遞數據庫名稱,還是應該繼續使用<connectionstrings>
部分?
一般來說,我不指望DB名稱改變。但可能會出現數據庫名稱可能與同一SQL實例中的另一個數據庫名稱衝突的情況。如果我想在同一個SQL實例上運行同一個應用程序的多個實例,也是這種情況,如果不重新編譯應用程序並更改數據庫名稱,則無法完成此操作。不理想。 –
然後我會說看看上面兩個選項之一。就個人而言,ADO.NET博客的想法似乎是兩者中最好的選擇。 –
謝謝,我想我會堅持使用參考文章中的Web.config文件中的connectionstring鍵。 –