DbContextInitializerを作成しようとしていて、DropCreateDatabaseAlwaysから継承しました。<>ただし、希望通りに機能しませんでした。データベースが現在使用中であっても削除する方法[Entity Framework]
public void InitializeDatabase(DbContext context)
{
if (context.Database.Exists())
{
context.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction,
$"ALTER DATABASE [{context.Database.Connection.Database}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE");
context.Database.Delete();
context.Database.Create();
}
else
{
context.Database.Create();
}
}
問題は、それがExecuteSqlCommandになったとき、それはコマンドを実行する前に、データベースを削除しようとしている(SQLプロファイラでデバッグ)
誰かが私に
ALTER DATABASE [{context.Database.Connection.Database}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
を実行する方法を知っているようでした
データベースを削除しようとする前に?
ちなみに、dopコマンドは、ExecuteSqlCommand行にヒットすると送信されます。
これを使用してみましたが、「ExecuteNonQuery」行で「System.Data.SqlClient.SqlException:データベースを削除できません」DatabaseName「現在使用中です」 – chandler
データベースを削除する権限がありますかそれはSSMとは? –
このコードは、DropCreateDatabaseAlways継承クラス内にあってはならず、このコードは外部からの呼び出しである必要があります –