Я выполняю первые шаги миграции кода сущности (v 5) в приложении MVC 4. Я хотел бы добавить уникальное ограничение на уровне базы данных.
Я знаю, что это можно сделать при создании таблицы, но у меня уже есть таблица. http://msdn.microsoft.com/en-US/data/jj591621
Я пробовал следующее, помеченное как ответ: Уникальное ограничение с EFCodeFirst и SqlCe4
Мой контекст базы данных немного отличается, я указываю, что имя подключения выглядит следующим образом
public AppDatabaseContext() : base("MyConnectionDBContext")
Когда я использую консоль управления пакетами для обновления базы данных, метод переопределенного семени не вызывается:
protected override void Seed(AppDatabaseContext context)
Я также пробовал следующее: http://romiller.com/2010/07/31/ef-ctp4-tips-tricks-running-additional-ddl/
Я не использовал вложенный класс, потому что казалось, что мне нужно зарегистрировать инициализатор через app.config. Я не мог заставить его работать, инициализируя его в коде. Вызывается InitializeDatabase, но следующее условие никогда не выполняется:
(!context.Database.Exists() || !context.Database.ModelMatchesDatabase())
Это происходит потому, что это происходит после выполнения миграции...
Я также пробовал это на одном этапе: Уникальное ограничение в первом коде Framework Entity. Это была та же проблема, что и раньше, это условие никогда не возвращалось.
В идеале я хотел бы включить некоторый стандартный SQL в мой файл миграции. Есть ли способ сделать это? Если нет, где я могу увидеть, как это сделать, используя первые миграции кода?
Спасибо!
UPDATE:
Есть ли причина, по которой я не могу использовать функцию SQL?
public override void Up()
{
AddColumn("Posts", "Abstract", c => c.String());
Sql("UPDATE Posts SET Abstract = LEFT(Content, 100) WHERE Abstract IS NULL");
}
Очевидно, используя правильный SQL...