簡體   English   中英

如何在 Azure 的 ConfigurationManager.ConnectionStrings 上使用 ConnectionStrings 創建 EF 遷移?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM