Първо използвам код на Entity framework 5 с активирани миграции. Направих много промени в моите моделни класове и сега имам твърде много миграционни класове, защото след всяка промяна актуализирах базата данни. Сега искам да обединя всичките си актуализации, за да получа един "начален клас" или 2, така че да мога да изпълня командата update-database само веднъж, ако трябва да създам моята база данни отново. Възможно ли е това без код (твърде тежък), имам предвид с команда например? Благодаря.
EF 5 – Оптимизация на първите миграции на код
Отговори (1)
Решението се основава на това дали искате да запазите съществуващите данни в бази данни (ако имате производствени бази данни, това определено е задължително) или можете просто да премахнете вашата база данни.
Аз. Текущата база данни може да бъде премахната
Първо трябва да изтриете всички стъпки за мигриране и да изтриете текущата си база данни, след което да изпълните командата
add-migration Initial
По този начин ще имате само една стъпка на миграция вместо много.
II. Данните трябва да се пазят
Първо създайте резервно копие на текущата база данни (която е зададена като база данни по подразбиране във вашето решение), след това изпуснете базата данни, така че когато изпълните командата add-migration, Entity Framework ще смята, че все още не са приложени миграции.
След това направете стъпките, както е описано в първата част, и тогава ще имате само една стъпка за миграция, наречена Initial. След това изпълнете
update-database
команда, която ще създаде база данни, съответстваща на текущия ви модел, но само с един ред в таблицата __MigrationHistory. Запазете този ред от таблицата __MigrationHistory.
Сега можете да възстановите базата данни, която току-що сте архивирали, да изтриете всички редове в таблицата __MigrationHistory и да вмъкнете онзи ред, който сте запазили преди. След това Entity Framework правилно ще смята, че базата данни и вашият модел са актуални и че това е постигнато само чрез стартиране на първоначалната стъпка за миграция и по този начин можете да запазите всичките си данни.
Разбира се, за да направите това с множество бази данни, трябва да направите тези стъпки само веднъж, а за другите бази данни просто трябва да изтриете текущите редове в таблицата __MigrationHistory и да вмъкнете новия ред за стъпката за първоначална миграция.