Вам нужно указать это. EF конвенции не может найти его без вашей помощи.
Если вы не хотите следовать правилам и вам нужно указать это с помощью атрибута аннотации данных ForeignKey
, как показано ниже:
[ForeignKey("OtherLinkId")]
public Link OtherLink { get; set; }
Или используя свободную конфигурацию:
modelBuilder.Entity<Link>()
.HasOne(x => x.OtherLink)
.WithOne(x => x.OtherLink)
.HasForeignKey(p => p.OtherLinkId);
.OnDelete(DeleteBehavior.Restrict);
Важное примечание:
Ваше свойство внешнего ключа должно иметь значение NULL, без которого вы не сможете вставить элемент в вашу таблицу OtherLink
.
Ваш окончательный код должен выглядеть следующим образом:
public class Link
{
public long Id { get; set; }
public long? OtherLinkId { get; set; } // <- Without this you'll be unable to insert a single link.
[ForeignKey("OtherLinkId")] // <- remove this if you use Fluent Configuration.
public Link OtherLink { get; set; }
}