c# – 实体框架提供异常:“底层提供程序在Open上失败”.

我有一个考试发生什么是,当首先执行test1时,test2将失败,并显示以下消息:

“System.Data.EntityException : System.Data.EntityException :
the underlying provider Failed on open. cannot open database
“DBEntities” requested by the login. The login Failed.”.

并且首先执行test2,则test1将失败并显示相同的消息.

过去3天我一直在这里.

[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;}
    ...
}

运行分析器后,我注意到这个消息:

“Login Failed for user. Reason: Failed to open the explicitly specified database.”

经过很多lockAcquired和lockReleased语句.

解决方法

可能的问题是连接池?即使EF对象被处理,sql提供程序会尝试保留测试之间的连接吗?在这种情况下,同一个用户有多个连接到同一个DB的问题?

尝试在清理过程中明确关闭连接:

db.Database.Connection.Close();

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...