Сделайте резервную копию, прежде чем база данных будет удалена DropCreateDatabaseIfModelChanges - PullRequest
3 голосов
/ 28 марта 2012

Сначала мы используем код ef с исходной моделью DropCreateDatabaseIfModelChanges.

База данных не содержит много конфиденциальной информации, поэтому все будет хорошо, если ее отбросят.быть в состоянии сделать резервную копию старой версии, прежде чем удалить ее.Возможно ли это?

1 Ответ

0 голосов
/ 12 апреля 2012

Мы внедрим интерфейс 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();
}
...