Entity Framework Core - значения дочернего класса null - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть один DBSet для всех моих дочерних классов -> базовый класс - EventModel. Когда я пытаюсь загрузить все EventUpdateCartModel (один дочерний класс из EventModel) со всеми данными, дочерние данные всегда равны нулю. Базовые значения доступны как SettingsModel или AccountModel.

** Мой вопрос: **

Как я могу загрузить все данные с базовым классом DbSet, а не с дочерним классом DbSet.

Классы

public abstract class EventModel
{

 ... Some Other Datas
 public virtual SettingsModel SettingsModel { get; set; }
 public virtual AccountModel AccountModel { get; set; }
}

public class EventUpdateCartModel : EventModel
{
  public virtual UpdateCartDataModel UpdateCartDatas { get; set; }
}

public class UpdateCartDataModel
{
  public long UpdateCartDataId { get; set; }
  public EventUpdateCartType Action { get; set; }  
}

DbSet

  public DbSet<EventModel> Events { get; set; }

Чтение строк

 var events = context.Events.ToList();

null

Когда я добавляю новый DbSet для дочернего класса и пытаюсь получить значение с помощью этого DbSet, все значения доступны.

DbSet

 public DbSet<EventUpdateCartModel> Events_UpdateCart{ get; set; }

Чтение строк

var events = context.Events_UpdateCart.ToList();

not null

** Мой вопрос: **

Как я могу загрузить все данные с базовым классом DbSet, а не с дочерним классом DbSet.

Надеюсь, кто-нибудь сможет мне помочь.

1 Ответ

0 голосов
/ 08 апреля 2019

Один из подходов состоит в том, чтобы изменить ваш запрос, чтобы он возвращал анонимный тип, который включает только необходимые поля из вашей модели, и опускал дочерний DbSet.Например:

var events = context.Events_UpdateCart
                .Select(u => new {
                      EventId = u.EventId,
                      EventType = u.EventType
                });

Подробнее о базовых документах EF .

...