3
먼저 DropCreateDatabaseIfModelChanges 시드 모델에서 ef 코드를 사용하고 있습니다.데이터베이스를 삭제하기 전에 백업을 만듭니다. DropCreateDatabaseIfModelChanges
데이터베이스에는 중요한 정보가 많지 않으므로 삭제하면 문제가 없습니다.
그러나 이전 버전을 삭제하기 전에 백업 할 수 있어야합니다. 가능한가?
먼저 DropCreateDatabaseIfModelChanges 시드 모델에서 ef 코드를 사용하고 있습니다.데이터베이스를 삭제하기 전에 백업을 만듭니다. DropCreateDatabaseIfModelChanges
데이터베이스에는 중요한 정보가 많지 않으므로 삭제하면 문제가 없습니다.
그러나 이전 버전을 삭제하기 전에 백업 할 수 있어야합니다. 가능한가?
곧 인터페이스 IDatabaseInitializer<T>
을 구현할 예정입니다. 지금은
, 우리는이 코드를 사용하고 (내가 아는, 적합하지 않습니다) :
Database.SetInitializer<OurdatabaseModel>(new OurdatabaseInitializer());
_instance = new OurdatabaseModel();
try
{
// force model creation
_instance.Database.Initialize(false);
}
catch (InvalidOperationException)
{
if (_instance == null)
{
throw;
}
// database exists. Let's back it up.
string dbPath = _instance.Database.Connection.Database.Replace("|DataDirectory|", Program.DataDirectory);
File.Move(dbPath, dbPath + "." + DateTime.Now.ToString("yyyy-MM-dd_hh-mm-ss") + ".sdf");
// and now the CreateDatabaseIfNotExists<T> will take care of the rest
_instance = new OurdatabaseModel();
}