2

いくつかの統合テストのために、データベースをその場で作成および削除しています。私はすべてのデータベース管理をADO.NETレベルで行っています。エンティティはテスト対象の一部であるため、テストではEntityFrameworkを使用しています。問題は、私がこれを行った後、次のことです。

using (ProjectEntities db = new ProjectEntities(cs)) {
}

データベースを削除できなくなりました。使用中とのことです。ドロップできるようにリリースするにはどうすればよいですか?

私は実際にADO.NETレベルで同じ問題を抱えていましたが、私がしたことは次のとおりです。

new SqlCommand("USE [master]", DatabaseConnection).ExecuteNonQuery();

しかし、EntityFramework接続に対して同じ効果を持つ何かを実行する方法がわかりません。私はdbオブジェクトを手動で破棄しようとしましたが(using句はそれを保証するはずですが)、db.Connectionを手動で閉じようとしました。どちらも役に立たなかった。Entity Framework接続を使用せずにSQLを直接実行できれば、実行できると思います。または多分別の方法がありますか?

4

1 に答える 1

5

すべての接続を明示的に閉じる必要がある場合があります。接続はプールされており、DBへのアクティブな接続を維持しているプールされた接続の1つであると思います。使ってみてくださいSqlConnection.ClearAllPools

Entity Framework ObjectContext-AWAITINGCOMMANDで同様の問題についてブログを書きました。

于 2009-09-20T19:26:09.723 に答える