Как автоматически назвать иностранные ссылки на что-то значимое? - PullRequest
5 голосов
/ 23 мая 2011

Допустим, у меня есть таблица Customer и две ссылки на таблицу City.В действительности (по умолчанию) я получу иностранные ссылки City1 и City2 для каждой записи о Клиенте.Как вы можете видеть, когда при создании имени EF учитывает только внешнее имя таблицы и игнорирует поле источника.

Было бы намного лучше, если бы EF мог использовать оба - имя целевой таблицы и имя исходного поля, как дляполе custBorn -> custBornCity, а для поля custLives -> custLivesCity.

ВОПРОС

Есть ли способ сделать это автоматически -- что-нибудь более значимое, чем просто пронумерованные ссылки (City1, City2 ...)?

Правки

1

У меня есть значимое имя поля (в таблице), значимый внешний ключ,Но EF игнорирует эту информацию.Он сосредоточен исключительно на имени целевой таблицы (которая имеет смысл только в том случае, если он используется один раз).

2

Я перефразирую вопрос, приведя несколько примеров.Мои внешние ключи (в БД) называются FK_Born_City и FK_Lives_City.Поэтому я бы хотел, чтобы EF автоматически генерировал такие имена:

  • FK_Born_City, FK_Lives_City (из имен внешних ключей) или
  • Born_City, LivesCity (из имен внешних ключей) или
  • custBornCity, custLivesCity (объединение полей + имя таблицы) или
  • CitycustBorn, CitycustLives (аналогично приведенному выше, но в обратном порядке) или
  • FK_Born_CitycityBorn, FK_Lives_City ofLaten concatenFK + имена полей, некрасиво) или ...

    Надеюсь, вы получите картину.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2012

В Sql server 2008 он автоматически использует имя таблицы и имя поля при создании имени ограничения FK.

Сервер Sql игнорирует значение поля при создании ограничения по умолчанию.

Вы можете создатьзначимое имя для ограничений FK с использованием следующих примеров сценариев.

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_TableName_ColumnName]') AND parent_object_id = OBJECT_ID(N'[dbo].[TableName]'))

ALTER TABLE [dbo].[TableName]  WITH CHECK ADD  CONSTRAINT [FK_TableName_ColumnName] FOREIGN KEY([PK_Field])
REFERENCES [dbo].[TableName2] ([FK_Field])
GO
0 голосов
/ 23 мая 2011

[...] игнорирует поле источника

Нет, если свойства не являются статическими.Пока свойства существуют в экземпляре объекта типа Customer, нельзя утверждать, что исходная часть игнорируется, afaict

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...