EF генерирует неправильный фк - PullRequest
0 голосов
/ 07 июня 2018

У меня есть два poco's

public class Person {
   [Key]
   public virtual int Id { get; set; }
   public virtual int? AtendeeId { get; set; }
   [ForeignKey("Id")]
   public virtual Atendee Atendeed { get; set; }
}

public class Atendee {
   [Key]
   public virtual int Id { get; set; }

   public virtual int PersonId { get; set; }
   public virtual Person Person { get; set; }
}

. По какой-то причине это создает FK от участника до человека, использующего столбец идентификатора участника вместо идентификатора лица.Каков был бы правильный способ объявить это?

Вот сгенерированный FK:

ALTER TABLE [dbo].[Atendees]  WITH CHECK ADD  CONSTRAINT [FK_dbo.Atendees_dbo.People_Id] FOREIGN KEY([Id])
REFERENCES [dbo].[People] ([Id])

1 Ответ

0 голосов
/ 07 июня 2018

Вы указываете только «противоположный» внешний ключ для коллекции, то есть для отношения 1-N.
Похоже, у вас есть отношение 1-1.

//[ForeignKey("Id")]
[ForeignKey("AtendeeId")]  // or just omit this
public virtual Atendee Atendeed { get; set; }

public class Person {
   [Key]
   public virtual int Id { get; set; }

   [ForeignKey("Atendeed")]  // refer to the property
   public virtual int? AtendeeId { get; set; }

   public virtual Atendee Atendeed { get; set; }
}

Но вы должны рассмотреть возможность использования беглой нотации в переопределении OnModelBuilding, которая обычно дает вам больше контроля.

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