![](/img/trans.png)
[英]How does ConfigurationManager.ConnectionStrings work?
[英]How to create EF migrations with ConnectionStrings on Azure's ConfigurationManager.ConnectionStrings?
我們最近從用於dev
的本地服務器和用於prod
的雲上的私有服務器轉移到 Azure,在那里我們有不同的插槽( dev
/ staging
/ prod
)以及 SQL Azure。
一切都運行良好,直到我需要創建一個新的遷移。 我們使用的是 Code First EF6,因此為了創建遷移,我在控制台包管理員窗口中鍵入add-migration Whatever099BriefDescription
命令。
我立即收到了一個指向連接字符串的NullReferenceException
。 我們有一個ConnectionStringFactory
類,我們曾經有一個#if DEBUG#
返回從Web.Config
抓取的正確連接字符串。
public static class ConnectionStringFactory
{
public static string GetConnectionString()
{
//USED JUST FOR CREATING MIGRATIONS
//#if DEBUG
// return @"Data Source = SQLSERVER\LANSERVER; Initial Catalog = Project; user id = Project; password = asdf; MultipleActiveResultSets = true";
//#endif
var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["Project"].ConnectionString;
return connectionString;
}
}
由於我們實際上使用的是 Azure 的配置連接字符串(在 Azure 門戶面板上),因此我們的web.config
沒有定義連接字符串。 所以當然NullReferenceException
是完全有意義的,因為它試圖從一個它不能被抓取的地方獲取那個字符串。
我終於可以再次使用#if DEBUG#
注釋創建遷移,提供硬編碼的連接字符串,當然之后刪除它。
這似乎是一種“奇怪”的行為,或者至少不是最佳行為。 您能否分享有關如何創建 EF 遷移的任何建議,而無需臨時對連接字符串進行硬編碼,以便可以“以某種方式”從 Azure 獲取它?
關於這個問題,我認為您可以從 Azure 下載連接字符串,將連接字符串設置為環境變量,然后運行命令add-migration
。 關於如何從 Azure 獲取連接字符串,請參考這里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.