#c# #entity-framework-core #dbset
#c# #entity-framework-core #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();
Когда я добавляю новый набор баз данных для дочернего класса и пытаюсь получить значение с помощью этого набора баз данных, все значения доступны.
DbSet
public DbSet<EventUpdateCartModel> Events_UpdateCart{ get; set; }
Чтение строк
var events = context.Events_UpdateCart.ToList();
** Мой вопрос:**
Как я могу загрузить все данные с помощью базового класса DbSet, а не с помощью дочернего класса DbSet.
Я надеюсь, что кто-нибудь сможет мне помочь.
Комментарии:
1. Вы не можете. Почему проблема с объявлением нескольких
DbSet
в вашем контексте?2. Это всего лишь вопрос. Это сэкономило бы мне много времени.
Ответ №1:
Одним из подходов было бы изменить ваш запрос, чтобы возвращать анонимный тип, который включает только необходимые поля из вашей модели, и опустить дочерний набор баз данных. Например:
var events = context.Events_UpdateCart
.Select(u => new {
EventId = u.EventId,
EventType = u.EventType
});
Подробнее читайте в документации EF core.