Сначала у меня есть довольно сложная модель базы данных (около 100 объектов) в коде EF6. Одна из этих сущностей называется «Base», другая — «BaseAssociation». «BaseAssociation» устанавливает отношение «многие ко многим» между «базовыми» объектами. К объектам «BaseAssociation» прикреплены объекты «BaseAssociationAttribute», которые предоставляют метаданные для ассоциаций.
«BaseAssociation» содержит две ссылки на «базовую» таблицу: «AssociatedBy» и «AssociatedWith». При создании модели базы данных в базе данных Oracle с помощью Devart dotConnect (8.4.215) ограничения внешнего ключа для обеих ссылок имеют одно и то же имя. Обычно именование состоит из типа объекта и имени свойства. Но почему-то в моем случае это кажется сломанным. dotConnect выдает следующий sql:
ALTER TABLE "BaseAssociations"
ADD CONSTRAINT "FK_Base_BaseAssociation" FOREIGN KEY ("AssociatedByRef") REFERENCES "Base" ("Id")
ALTER TABLE "BaseAssociations"
ADD CONSTRAINT "FK_Base_BaseAssociation" FOREIGN KEY ("AssociatedWithRef") REFERENCES "Base" ("Id")
Каким-то образом оба внешних ключа получают одно и то же имя ограничения.
В то время как при настройке сервера sql все работает нормально. Почему-то мне не удалось воспроизвести это с более простой моделью, и все остальные имена ограничений следуют схеме по умолчанию. Я не касался ни одного из первых соглашений кода, но включил «усекать длинные имена по умолчанию», «игнорировать имя схемы» и «совместимость с соглашением о типе столбца».
Я использую EF6.1.1, dotconnect 8.4.215
У кого-нибудь есть идея? Спасибо