Почему нельзя определить сторону ребенка / иждивенца для этих отношений один на один? - PullRequest
0 голосов
/ 18 июня 2020

Я получаю обычную ошибку:

Дочерняя / зависимая сторона не может быть определена для однозначного отношения между 'Person.UserAccount' и 'UserAccount.Person'. Чтобы определить дочернюю / зависимую сторону отношения, настройте свойство внешнего ключа. Если эти переходы не должны быть частью одного отношения, сконфигурируйте их без указания обратного. См. http://go.microsoft.com/fwlink/?LinkId=724062 для более подробной информации.

В моем случае UserAccount является подчиненным для Person, у них отношение один к нулю / один и внешний ключ - это идентификатор поля. Я настроил его следующим образом:

modelBuilder.Entity<Person>()
            .HasOne(e => e.UserAccount)
            .WithOne(e => e.Person)
            .IsRequired()
            .HasForeignKey<UserAccount>(e => e.Id);

Я перепробовал множество других комбинаций, прочитал документы и другие вопросы, но независимо от того, что он просто не может определить дочернюю / зависимую сторону .

Класс UserAccount:

[Table("UserAccount")]
public class UserAccount : EntityBase
{
    public int Id { get; set; }

    public Person Person { get; set; }

}

Класс человека:

    [Table("PERSON")]
public partial class Person : EntityBase
{
    public Guid Id { get; set; }

    [Key]
    public int PersonId { get; set; }

    public UserAccount UserAccount { get; set; }

}

Что происходит? что мне не хватает?

1 Ответ

1 голос
/ 18 июня 2020

В вашей таблице PERSON у вас есть 2 свойства, которые могут быть свойством внешнего ключа, что привело к путанице в ядре EF. Можете ли вы попробовать добавить [ForeignKey("PersonId")] в UserAccount Class:

[Table("UserAccount")]
public class UserAccount : EntityBase
{
    public int Id { get; set; }

    [ForeignKey("PersonId")]
    public int PersonId {get;set;}
    public Person Person { get; set; }

}

EDIT: Попробуйте также переименовать свои свойства соответствующим образом.

...