Могу ли я как-то иметь два внешних ключа из одного и того же ключа таблицы в таблице наследования таблицы на иерархию? - PullRequest
0 голосов
/ 10 ноября 2019

Ядро 2.2:

У меня есть наследование таблиц на иерархию (TPH), и у меня есть клиент и агент как наследники от членства. Теперь я пытаюсь создать заказ на покупку и хочу добавить оба их идентификатора членства в качестве внешних ключей, но не могу, потому что это означало бы добавление идентификатора MemberID дважды в качестве внешних ключей в моей первой модели кода:

    [ForeignKey("CustomerModel")]
    public string MemberId { get; set; }

    [ForeignKey("AgentModel")]
    public string MemberId { get; set; }

Do Iпридется разделить их на две таблицы вместо использования наследования? Могу ли я просто переименовать их из MemberId в AgentID, например, или оно должно соответствовать имени внешнего ключа?

1 Ответ

0 голосов
/ 10 ноября 2019

В базах данных бывает так, что у вас есть несколько похожих записей. Как и несколько внешних ключей из одной таблицы. В этих редких случаях они также не являются полными отношениями N: M, поэтому они не могут (и не должны) решаться таким образом. У вас есть действительные примеры для этого редкого случая. В конце концов, Агент также может быть Клиентом в любой данной Транзакции. Включая тех, где он также является агентом.

Я всегда стараюсь работать с таблицей, для которой есть внешний ключ, с именами столбцов. Но в таком случае вы могли бы включить в нее функцию.

public string Fk_CustomerMemberId { get; set; }

public string Fk_AgentMemberId { get; set; }

Однако я понятия не имею, как заставить EF правильно отобразить их с разными именами. Я полагаю, вы поместили это в [ForeignKey("CustomerModel")] Атрибут. Может быть, что-то вроде ("CustomerModel.MemberID") или ("CustomerModel","MemberID")?

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