簡體   English   中英

無法打開登錄請求的數據庫“ [數據庫]”。 登錄失敗。 用戶“ [User]”的登錄失敗

[英]Cannot open database “[Database]” requested by the login. The login failed. Login failed for user '[User]"

首先使用EF代碼時出現上述錯誤。 第一次運行我的代碼時,一切都按預期工作,但是當我刪除數據庫並再次運行代碼時,將引發異常。 似乎EF不在第二次創建數據庫,並且似乎認為該數據庫仍然存在。

當我重置iis時,EF能夠再次創建數據庫(僅第一次)。

這是我的連接字符串

<add name="DatabaseContext" connectionString="Data Source=MyServer;Initial Catalog=UnitTest;Persist Security Info=True;User ID=MyUser;Password=MyPassword"  providerName="System.Data.SqlClient" />

運行應用程序時,第一次查詢執行將為每個應用程序域構建一個元數據模型,並且每個新的DbContext將重用全局元數據。

恐怕在刪除數據庫時,仍將使用相同的應用程序域來執行查詢,但是EF仍然認為數據庫已創建,因為元數據是全局緩存的。 這種行為很少發生。

但是,如果數據庫不存在,則可以嘗試顯式執行該數據庫。 這將增加額外的開銷,以在每次查詢執行時檢查數據庫是否存在。

using (var db = new AppContext())
{
    if (!db.Database.Exists())
    {
        db.Database.Initialize(true);
    }

    // query
}

或者您可以將其放在構造函數中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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