簡體   English   中英

實體框架給出異常:“底層提供程序在打開時失敗。”

[英]Entity Framework giving exception : “The underlying provider failed on Open.”

我有一個測試。 發生的情況是,每當首先執行test1時,test2都會失敗,並顯示以下消息:

““ System.Data.EntityException:System.Data.EntityException:基礎提供程序在打開時失敗。無法打開登錄請求的數據庫“ DBEntities”。登錄失敗。”。

並且每當首先執行test2時,test1都會失敗,並顯示相同的消息。

在過去的三天里,我一直在這里。

[TestClass]
class MyTestClass 
{

    DBEntities db;

    [TestInitialize]
    public void Initializer()
    {
       db = new DBEntities(); 
    }

    [TestMethod]
    public void test1()
    {
       db.Books.Add(new Book{ ...});
       db.SaveChanges();

    }

    [TestMethod]
    public void test2()
    {
       db.Books.Add(new Book{ ...});
       db.SaveChanges();
    }


    [TestCleanup]
    public void Clean()
    {
       db.Dispose(); 
    }

}

這是DBEntities類的摘錄:

public class DBEntities : DbContext
{
    public DbSet<Books> TheBooks{get;set;}
    ...
}

運行探查器后,我注意到此消息:

“用戶登錄失敗。原因:無法打開顯式指定的數據庫。”

經過很多lockAcquiredlockReleased語句之后。

問題可能是連接池嗎? 即使處理了EF對象,SQL提供程序是否也會嘗試保留測試之間的連接? 在那種情況下,同一用戶與同一數據庫的多個連接是否會出現問題?

嘗試在清理中顯式關閉連接:

db.Database.Connection.Close();

消息的重要部分是:

用戶“ domain1 \\ user1”的登錄失敗。

如果數據庫拒絕您傳遞的登錄信息,則EF無法工作。

有時,您可以在運行框中鍵入“ iisreset”,它將清除您描述的問題,尤其是在一切正常且突然停止工作的情況下。 由於系統內存不足,可能會發生此錯誤。 (至少就我而言)

開始>>運行>> iisreset

如果通過IIS運行,請檢查附加到Web應用程序的IIS池的身份

暫無
暫無

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

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