entity framework提供exception:“底层提供程序在Open上失败。”

我有一个测试。 发生的事情是,无论何时首先执行test1,test2都会失败并显示以下消息:

“System.Data.EntityException:System.Data.EntityException:基础提供程序在打开时失败。无法打开登录请求的数据库”DBEntities“。登录失败。”

每当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 TheBooks{get;set;} ... } 

运行探查器后,我注意到这条消息:

“用户登录失败。原因:未能打开明确指定的数据库。”

经过很多lockAcquiredlockReleased语句之后。

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

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

 db.Database.Connection.Close(); 

消息的重要部分是:

用户’domain1 \ user1’登录失败..

如果数据库拒绝您传递的登录信息,则EF无法工作。

有时,您可以在运行框中键入“iisreset”,它将清除您描述的问题,特别是如果一切正常,并且突然间它停止工作。 由于系统内存不足,可能会发生此错误。 (至少在我的情况下)

开始/>>运行>> iisreset”></p>

</div><!-- #comment-## -->
<div class=

如果您正在通过IIS运行,请检查附加到Web应用程序的IIS池的标识