Вот отличная статья о первом подходе к коду, включая развертывание в нижней части: http://msdn.microsoft.com/en-us/magazine/hh126815.aspx
Вы можете использовать такой инструмент, как Сравнение SQL Red Gate , чтобы проанализировать различия между вашей средой разработки и целевой средой, чтобы создать сценарии изменений, которые позволят вашему администратору баз данных выполнить миграцию.
Еще одна вещь, которую вы можете захотеть сделать, это добавить сущность под названием «AppVersion» в контекст первого кода. Затем переопределите метод Seed () вашего DropCreateDatabaseIfModelChanges IDatabaseInitializer, чтобы он записывал текущую версию приложения или, возможно, номер редакции исходного кода, используя непрерывную сборку.
Пример:
public class OrderDbInitializer : DropCreateDatabaseIfModelChanges<OrderContext>
{
protected override void Seed(OrderContext context)
{
context.AppVersion.Add(new AppVersion() {Version = Assembly.GetExecutingAssembly().GetName().Version.ToString()});
context.SaveChanges();
}
}
Таким образом, вы всегда будете знать, какая версия вашего кода связана с базой данных. Вы также можете добавить больше кода в метод Seed (), чтобы создать примеры данных, которые разработчики должны использовать при написании приложения.
Наконец, вы не захотите использовать инициализатор DropCreateDatabaseIfModelChanges в производственной среде, поэтому необходимо использовать config config или какой-либо шаблон Factory.
Надеюсь, это поможет вам дать некоторые идеи.