0
EF 6을 사용하고 일부 통합 테스트에는 데이터베이스를 완전히 제거하고 데이터베이스 컨텍스트를 사용하여 다시 작성하려고합니다.EntityFramework를 사용하여 데이터베이스 삭제 및 다시 작성
우리는 데이터베이스의 독점적 인 사용을 시도하지만 사용중인 데이터베이스는 errror가되고 있습니다. 이것이 우리가 시도한 것입니다.
private void CreateDatabase()
{
MyDbContext context = new MyDbContext();
SqlConnection sqlConnection = context.Database.Connection as SqlConnection;
LockDb(sqlConnection);
context.Database.Delete();
context.Database.CreateIfNotExists();
UnLockDb(sqlConnection);
_context = context;
}
private void LockDb(SqlConnection connection)
{
const string cmdText =
"USE[master];"
+ "IF exists(select * from sys.databases where name = 'MyDb')"
+ "BEGIN"
+ " ALTER DATABASE[MyDb] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;"
+ "END;";
OpenConnection(connection);
ExecuteCommand(connection, cmdText);
}
무엇이 빠져 있습니까?
테스트가 병렬로 실행됩니까? –
그들이 중요하지 않아도 더 강해서, 데이터베이스를 삭제하고 다시 가져 오지 못하게해야합니다. –
글쎄,이 문제가있는 유일한 사람은 아니 었습니다. [여기서 (물론) 스택]) http://stackoverflow.com/questions/15051185/entity-framework-unable-to-delete-database-database-in-use?rq=1) –