Как в EntityFramework Core использовать два свойства одного типа?

Рейтинг: 0Ответов: 0Опубликовано: 24.04.2023

Пытаюсь понять, возможно ли реализовать в EF Core такое отношение (код не из предметной области):

public class Company
{
    public int Id { get; set; }
    public string Name { get; init; }

    public User SimpleUser { get; set; }
    public User AdminUser { get; set; }

    private Company() { }

    public Company(string name)
    {
        Name = name;
    }
}

public class User
{
    public int Id { get; set; }
    public string Name { get; init; }

    private User() { }

    public User(string name, Company company)
    {
        Name = name;
        Company = company;
    }

    public int CompanyId { get; set; }
    public virtual Company Company { get; set; }
}

Во-первых, я не могу понять, какое здесь отношение. Один-к-одному, один-ко-многим или многие-ко-многим?

С конфигурацией по умолчанию при создании миграции появляется ошибка:

System.InvalidOperationException: Unable to determine the relationship represented by navigation 'Company.AdminUser' of type 'User'. Either manually configure the relationship, or ignore this property using the '[NotMapped]' attribute or by using 'EntityTypeBuilder.Ignore' in 'OnModelCreating'.

Похожий вопрос был задан здесь:

How to use EF Core when two properties in the Principle entity point to the same attribute in the dependent entity?

Его решение в использовании InverseProperty. Однако в вопросе структура класса несколько отличается от моего. По ссылке класс содержит одно свойство, содержащее тип Faculty, и второе свойство, содержащее список Faculty. Мне не удалось правильно применить указанный метод.

Любые соображения приветствуются.

Ответы

Ответов пока нет.