我有一个测试。发生的情况是,无论何时首先执行 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();
}
}
这是 DEBentities 类的摘录:
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.Database.Connection.Close();
关于c# - Entity Framework 给出异常 : "The underlying provider failed on Open.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4987787/