Подход модели Entity Framework сначала удаляет все данные таблицы - PullRequest
0 голосов
/ 11 ноября 2011

Я изучаю модель первого подхода в Entity Framework. Я обнаружил, что все данные стираются всякий раз, когда происходит повторное создание базы данных из модели. Является ли модель вначале действительно полезным подходом или есть способ исправить это

Ответы [ 4 ]

2 голосов
/ 11 ноября 2011

Модель сначала не удаляет ваши данные автоматически.Он создает сценарий SQL для создания базы данных, и если вы его выполните, он, вероятно, удалит все ваши таблицы, но вы можете изменить сценарий вручную или использовать какой-либо расширенный инструмент для обновления базы данных:

1 голос
/ 11 ноября 2011

Entity Framework удаляет вашу базу данных и воссоздает ее с нуля. Вот как это работает. Microsoft работает над стратегией миграции, которая позволит вам переносить изменения, но она не будет готова до следующей основной версии.

Есть некоторые сторонние инструменты, которые пытаются решить эту проблему, но я бы не стал слишком зависеть от них.

0 голосов
/ 10 апреля 2013

Всякий раз, когда вы обновляете модель и запускаете автоматически сгенерированный сценарий SQL, вы можете вручную заполнить базу данных, чтобы получить ваши данные обратно. Заполнение не работает в Model-First так же, как в Code-First, поэтому часто обсуждаемый и полезный подход DropAndCreateDatabaseIfModelChanges работает не так хорошо. Самый простой способ обойти это - начать сеять вручную, инициализировав себя.

var db = new MyDbContext();
db.Database.Initialize(true);
0 голосов
/ 11 ноября 2011

Одним из способов решения этой проблемы является заполнение ваших данных, т.е. заполнение базы данных некоторыми тестовыми данными после того, как EF их создаст.См. http://binuity.com/blog/2011/03/28/ef4-seeding-data-on-each-dropcreatedatabaseifmodelchanges/

Еще один способ - использовать инструменты , которые будут пытаться обновить базу данных вместо ее повторного создания.

...