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();
}