MVC 4, Entity Framework 5 및 코드 우선 접근 방식을 사용하고 있습니다.사용자에게 데이터베이스를 변경할 수있는 권한이 없습니다.
모델을 변경하고 응용 프로그램을 실행할 때 데이터베이스가 사용 중이므로 삭제할 수 없다는 오류가 발생합니다.
이 문제를 해결하려면, 내가 구현 한 내 IDatabaseInitializer
이 같은 단일 연결을 강제로 자신의 :
public class ForceDropCreateDatabaseInitializer<T> : IDatabaseInitializer<T> where T : DbContext, new()
{
public ForceDropCreateDatabaseInitializer(Action<T> seed = null)
{
Seed = seed ?? delegate { };
}
public Action<T> Seed { get; set; }
public void InitializeDatabase(T context)
{
if (context.Database.Exists())
{
string databaseName = context.Database.Connection.Database;
string alterStatement = "ALTER DATABASE [{0}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE";
string dropStatement = "USE [master] DROP DATABASE [{0}]";
context.Database.ExecuteSqlCommand(alterStatement, databaseName);
context.Database.ExecuteSqlCommand(dropStatement, databaseName);
}
context.Database.Create();
Seed(context);
}
}
을하지만 지금은이 라인에 권한 오류가 점점 오전 :
context.Database.ExecuteSqlCommand(alterStatement, databaseName);
예외 메시지 :
User does not have permission to alter database '@p0', the database does not exist, or the database is not in a state that allows access checks.
ALTER DATABASE statement failed.
매개 변수를 사용하기 때문에 @ p0이 사용됩니다. 모델을 변경할 때마다이 오류를 피하고 데이터베이스를 성공적으로 삭제하고 만들 수있는 방법은 무엇입니까?