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) –