繁体   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