2009-09-20 2 views
2

일부 통합 테스트에서는 데이터베이스를 즉시 만들고 삭제합니다. ADO.NET 레벨에서 모든 데이터베이스 관리를하고 있습니다. 엔터티가 내가 테스트하고있는 부분 중 하나이기 때문에 테스트를 위해 Entity Framework를 사용하고 있습니다. 문제는 다음과 같습니다.ADO.NET (및 EntityFramework)에서 데이터베이스를 해제합니다.

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

더 이상 데이터베이스를 삭제할 수 없습니다. 그것은 그것이 사용 중이다라고 말한다. 어떻게 그것을 놓아 버릴 수 있습니까?

나는 실제로 ADO.NET 수준에서 같은 문제를했고 내가 한 일은이었다

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

하지만 난 엔티티 프레임 워크 연결을위한 동일한 효과 뭔가를 수행하는 방법을 잘 모르겠어요. db 객체를 수동으로 삭제하려고 시도했지만 (using 절에서이를 보장해야 함) db.Connection을 수동으로 닫으려고했습니다. 둘 다 도왔다. Entity Framework 연결없이 직접 SQL을 실행할 수 있다면 그렇게 할 수있을 것입니다. 아니면 다른 방법이 있을까요?

답변

5

명시 적으로 모든 연결을 닫아야 할 수도 있습니다. 연결이 풀링되고 풀링 된 연결 중 하나인데 DB에 활성 연결을 유지하고있는 것으로 보입니다. 사용해보십시오 SqlConnection.ClearAllPools

나는 Entity Framework Object Context - AWAITING COMMAND에 유사한 문제에 관해 블로깅했습니다.

관련 문제