Есть ли способ отменить / удалить / откатить соглашение об именовании внешнего ключа EF 4.3? - PullRequest
0 голосов
/ 22 февраля 2012

Сначала, используя код EF, у нас есть структура заполнения базы данных, которая использует инициализаторы зависимостей и инициализаторы базы данных для заполнения базы данных примера тестовыми данными.

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

ALTER TABLE [Schema].[TableName] NOCHECK CONSTRAINT [TableName_FkPropertyName]
-- perform a block of inserts
ALTER TABLE [Schema].[TableName] CHECK CONSTRAINT [TableName_FkPropertyName]

Я только что обновил EF 4.2 до EF 4.3 и заметил, что они больше не работают.Изучение БД, созданного EF, показывает, что FK теперь называются по-разному:

FK_CodeFolder1.Table1Name_CodeFolder2.Table2Name_DbFkColumnName

Есть ли способ удалить это соглашение об именах и вернуться к оригиналу?Если нет, то как это не известная проблема или критическое изменение ?

Обновление после ответа Ладислава

Ладислав прав, мое объяснение вышеновый шаблон именования был не совсем правильным.Я обновил это.Часть, предшествующая.не было полного пространства имен, но это было имя папки в проекте модели объекта.Таким образом, если бы у меня был объект WidgetAbc в папке AggregateSet1, фрагмент шаблона fk был бы AggregateSet1.WidgetAbc, а не просто WidgetAbc.

1 Ответ

1 голос
/ 22 февраля 2012

Почему вы думаете, что это проблема или серьезное изменение?ИМХО, это внутреннее поведение EF - вы сначала используете код, и в этом подходе вы не должны были работать непосредственно с базой данных, и особенно вы не должны основывать свои собственные скрипты базы данных на жестко закодированных именах, потому что у вас нет контроля над их генерацией.

Я не думаю, что вы можете отменить поведение, но вы можете начать использовать миграции и кодировать определения таблиц - AddForeignKey метод должен позволить вам назвать ваше ограничение FK.

Btw.Я вижу другую модель именования ограничений FK в EFv4.3:

FK_DependentTableName_PrincipalTableName_FKColumnName
...