Создание составного ключа с несколькими внешними ключами из одной таблицы EF code first
Привет всем,
У меня возникла проблема с кодом сначала на EF6.
Я получаю эту ошибку при попытке создать миграцию "количество свойств в зависимой и основной ролях в ограничении отношений должно быть одинаковым."
Вот этот код:
public class TradeJournal { [Key, Column(Order = 0)] public int UserID { get; set; } [ForeignKey("UserID")] public UserAccount UserAccount { get; set; } [Key, Column(Order = 1)] public int AccountNumber { get; set; } [ForeignKey("AccountNumber")] public FxAccount FxAccount { get; set; } [Key, Column(Order = 2),ForeignKey("OpenTime")] public string OpenTime { get; set; } public HistoricalTrade HistoricalTrades { get; set; } [Key, Column(Order = 3), ForeignKey("CloseTime")] public string CloseTime { get; set; } public HistoricalTrade HistoricalTrade { get; set; } public string Entry { get; set; } public byte[] Image { get; set; } }
Который ссылается на этот класс здесь:
public class HistoricalTrade { [Key, Column(Order = 0)] public int UserID { get; set; } [ForeignKey("UserID")] public UserAccount UserAccount { get; set; } [Key, Column(Order = 1)] public int AccountNumber { get; set; } [ForeignKey("AccountNumber")] public FxAccount FxAccount { get; set; } [Key, Column(Order = 2)] [JsonProperty("openTime")] public string OpenTime { get; set; } [Key, Column(Order = 3)] [JsonProperty("closeTime")] public string CloseTime { get; set; } }
Я пытаюсь создать составной ключ,состоящий из двух внешних ключей (Openstime, CloseTime), ссылающихся на одну и ту же таблицу (HistoricalTrade).
Я схожу с ума, лол.
Это была моя последняя попытка сделать так, чтобы на historicalTrade ссылались дважды, один с буквой s и один без нее.В данный момент я делаю все, что угодно.
У кого-нибудь есть идея, как исправить эту проблему? А для получения бонусных баллов объясните ошибку, которую я получаю, в более простых терминах, чтобы я мог узнать, на что ссылаются(т. е. что такое зависимая роль, основная роль и ограничение отношений (хотя я предполагаю, что это просто FKs)?).
Я действительно чувствую, что один из моих ресурсов "пробовал", возможно, имел ответ, который я просто не реализовал правильно просто потому, что не понял, как его реализовать :/
Что я уже пробовал:
Читающий эту DataAnnotations - атрибут ForeignKey в ядре EF 7 & EF[^]
Читающий эту DataAnnotations - атрибут InverseProperty в коде-первый[^]
И этот тоже : asp.net mvc - определение нескольких внешних ключей для одной и той же таблицы в коде Entity Framework First - Stack Overflow[^]
А это :c# - код Entity Framework First - два внешних ключа из одной таблицы - переполнение стека[^]
И это тоже : Множественные отношения/внешние ключи между двумя таблицами (в классах) | ASP.NET форумы[^]
И еще несколько таких постов, на которые у меня больше нет ссылки (или помните, что я набрал для результата поиска).
Я попытался использовать обратное свойство, но в моем конкретном случае это не имело смысла, как это правильно реализовать?
Я изменил его на виртуальный HistoricalTrade и сделал оба внешних ключа = "HistoricalTrade", назвав его, например, HistoricalTrade_OpenTime. Но это не сработало.
Я здесь в растерянности.
Любая помощь будет оценена по достоинству.