![](/img/trans.png)
[英]Entity framework 4.3 DBMigrations code first, database dependency
[英]Entity Framework 4.3 code first database naming
我正在使用EF 4.3和Code第一種方法。
使用EF 4.3,它建議使用新的<entityFramework />
config部分來初始化上下文的連接字符串。
我已經在線進行了一些搜索,我似乎無法找到一種方便的方法來使用此方法初始化具有可配置數據庫名稱的連接。
例如,假設我的應用程序中有一個MyDBContext
實體。 我希望它使用Initial Catalog=MyDB;
的連接字符串中指定的數據庫名稱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支持的更新的配置部分,我無法在連接字符串中指定數據庫名稱。 我嘗試了以下內容,但忽略了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") { }
但是,如果我采用這種方法,我最終將數據庫名稱硬編碼到我的應用程序中,我個人不喜歡這樣。
我想知道有沒有辦法可以方便地從Web.config
文件傳遞我的數據庫上下文的數據庫名稱,還是應該繼續使用<connectionstrings>
部分?
您認為數據庫名稱必須經常更改的頻率如何?
也就是說,我自己沒有遇到過這個問題(我很好地硬編碼數據庫名稱 - 它不應該改變)一個選項可能是將你想要的數據庫名稱存儲在Web.config中作為應用程序設置,然后讓你的代碼從那里拉取值。
public UnicornsContext()
: base("name=UnicornsCEDatabase")
{
}
通過拉動具有該特定名稱的連接字符串:
<configuration>
<connectionStrings>
<add name="UnicornsCEDatabase"
providerName="System.Data.SqlServerCe.4.0"
connectionString="Data Source=Unicorns.sdf"/>
</connectionStrings>
</configuration>
根據http://blogs.msdn.com/b/adonet/archive/2012/01/12/ef-4-3-configuration-file-settings.aspx,這應該仍然適用於4.3。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.