Как определить отношения наследования в LINQ Entity Framework Core - PullRequest
0 голосов
/ 26 января 2020

Я реализую проект на asp. net ядре. На sql сервере у меня есть таблица под названием Кандидат, и у нее есть два дочерних элемента LegalApplicant и PersonApplicant, оба из которых наследуют от таблицы Кандидата, и каждый из них имеет связанные атрибуты. Каждая из таблиц LegalApplicant и PersonApplicant имеет однозначное отношение к таблице «Заявитель». Я использовал первый подход DB, чтобы помостить их в визуальной студии. Теперь я хочу определить отношения между ними с помощью linq. Я ценю, если кто-нибудь может решить мою проблему. Я новичок в ядре EF. И даже у меня есть проблемы в понимании синтаксиса.

   public partial class PersonApplicant:Applicant
    {
        public int ApplicantId { get; set; }
        public int ApplicantType { get; set; }
        public string Username { get; set; }
        public string NationalCode { get; set; }
        public string BirthCertificateNo { get; set; }
        public string IssuePlace { get; set; }

        public virtual Applicant Applicant { get; set; }
        public virtual EntityType ApplicantTypeNavigation { get; set; }
    }

public partial class LegalApplicant : Applicant
    {
        public int ApplicantId { get; set; }
        public int ApplicantType { get; set; }
        public string EconomicCode { get; set; }
        public string RegisterNo { get; set; }
        public string NationalCode { get; set; }

        public virtual Applicant Applicant { get; set; }
        public virtual EntityType ApplicantTypeNavigation { get; set; }
    }

 public partial class Applicant
    {
        public Applicant()
        {
            Apiapplicant = new HashSet<Apiapplicant>();
            LegalApplicant = new HashSet<LegalApplicant>();
            PersonApplicant = new HashSet<PersonApplicant>();
        }

        public int ApplicantId { get; set; }
        public int ApplicantType { get; set; }
        public string Address { get; set; }
        public string Description { get; set; }
        public string IsDeleted { get; set; }
        public string Name { get; set; }

        public virtual EntityType ApplicantTypeNavigation { get; set; }
        public virtual ICollection<Apiapplicant> Apiapplicant { get; set; }
        public virtual ICollection<LegalApplicant> LegalApplicant { get; set; }
        public virtual ICollection<PersonApplicant> PersonApplicant { get; set; }
    }

1 Ответ

0 голосов
/ 26 января 2020

Я думаю, вы ищете что-то вроде этого:

public class PersonApplicant : Applicant
{
    public string Username { get; set; }
    public string BirthCertificateNo { get; set; }
    public string IssuePlace { get; set; }
}

public class LegalApplicant : Applicant
{
    public string EconomicCode { get; set; }
    public string RegisterNo { get; set; }
}

public class Applicant
{
    public int ApplicantId { get; set; }
    public int ApplicantType { get; set; }
    public string Address { get; set; }
    public string Description { get; set; }
    public string IsDeleted { get; set; }
    public string Name { get; set; }
    public string NationalCode { get; set; }
}

Затем в вашем DbContext сделайте что-то вроде этого:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Applicant>();
}

Это даст Applicants таблица со столбцом «Дискриминатор» для определения того, какие столбцы должна использовать любая запись.

В настоящее время EF Core поддерживает только шаблон таблицы на иерархию (TPH). TPH использует одну таблицу для хранения данных для всех типов в иерархии, а столбец дискриминатора используется для определения того, какой тип представляет каждая строка.

Ссылка: Наследование

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