EF 5 – Оптимизация на първите миграции на код

Първо използвам код на Entity framework 5 с активирани миграции. Направих много промени в моите моделни класове и сега имам твърде много миграционни класове, защото след всяка промяна актуализирах базата данни. Сега искам да обединя всичките си актуализации, за да получа един "начален клас" или 2, така че да мога да изпълня командата update-database само веднъж, ако трябва да създам моята база данни отново. Възможно ли е това без код (твърде тежък), имам предвид с команда например? Благодаря.




Отговори (1)


Решението се основава на това дали искате да запазите съществуващите данни в бази данни (ако имате производствени бази данни, това определено е задължително) или можете просто да премахнете вашата база данни.

Аз. Текущата база данни може да бъде премахната

Първо трябва да изтриете всички стъпки за мигриране и да изтриете текущата си база данни, след което да изпълните командата

    add-migration Initial

По този начин ще имате само една стъпка на миграция вместо много.

II. Данните трябва да се пазят

Първо създайте резервно копие на текущата база данни (която е зададена като база данни по подразбиране във вашето решение), след това изпуснете базата данни, така че когато изпълните командата add-migration, Entity Framework ще смята, че все още не са приложени миграции.

След това направете стъпките, както е описано в първата част, и тогава ще имате само една стъпка за миграция, наречена Initial. След това изпълнете

update-database

команда, която ще създаде база данни, съответстваща на текущия ви модел, но само с един ред в таблицата __MigrationHistory. Запазете този ред от таблицата __MigrationHistory.

Сега можете да възстановите базата данни, която току-що сте архивирали, да изтриете всички редове в таблицата __MigrationHistory и да вмъкнете онзи ред, който сте запазили преди. След това Entity Framework правилно ще смята, че базата данни и вашият модел са актуални и че това е постигнато само чрез стартиране на първоначалната стъпка за миграция и по този начин можете да запазите всичките си данни.

Разбира се, за да направите това с множество бази данни, трябва да направите тези стъпки само веднъж, а за другите бази данни просто трябва да изтриете текущите редове в таблицата __MigrationHistory и да вмъкнете новия ред за стъпката за първоначална миграция.

person Márk Gergely Dolinka    schedule 13.06.2014
comment
благодаря за отговора, но не разбирам последната част. Ако изтрия текущата база данни, как мога да използвам таблицата __MigrationHistory с новата база данни? - person Llm; 20.06.2014
comment
редактирах публикацията си, за да бъде малко по-подробна и сега тя съдържа всички стъпки, а не само чернова за това какво да правя. - person Márk Gergely Dolinka; 20.06.2014
comment
Няма за какво, ако сте решили проблема с този отговор, маркирайте го като правилен отговор;) - person Márk Gergely Dolinka; 23.06.2014