EF Core: как получить доступ к свойству в производном классе внутри другого связанного объекта - PullRequest
0 голосов
/ 13 октября 2018

Я хочу получить доступ к свойствам из производного класса в TPH.

Базовый класс

public abstract class Author
{
    public int AuthorId { get; set; }

    public AuthorType AuthorType { get; set; }

    public ICollection<Post> Posts { get; set; }

}

Производный класс

public class Organization : Author
{ 
    public string Name { get; set; }

}

Конфигурации

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Author>()
                .HasDiscriminator(a => a.AuthorType)
                .HasValue<Person>(AuthorType.Person)
                .HasValue<Organization>(AuthorType.Organization);

    modelBuilder.Entity<Author>()
                .HasMany(p => p.Posts);

    modelBuilder.Entity<Post>()
                .HasOne(a => a.Author)
                .WithMany(p => p.Posts);
}

Я хочу получить доступ к свойству Имя в сообщениях организации:

Author author = new Organization { Name = "CA", OrganizationType = OrganizationType.NonProfit};

Post post = new Post { Subject = "News", Author = author, Tag = PostTag.SualatUpdate};

context.Add(author);
context.Add(post);

1 Ответ

0 голосов
/ 13 октября 2018

Вы объявили переменную следующим образом: Author author = new Organization, поэтому ваша переменная будет иметь тип Author - у которого нет свойства 'Name'.

Возможно, вам придется пересмотретькак ты здесь делаешьВы можете просто объявить переменную как Organisation author = new Organisation.Но трудно узнать больше, не догадываясь.

[OT: Мои 2 цента стоят - не переусердствуйте в наследовании.можно начать с некоторого повторяющегося кода, а затем вы увидите, что шаблоны появляются и перефакторируются.]

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