Исключить данные дочерней таблицы при получении данных из БД - PullRequest
0 голосов
/ 29 августа 2018

Сначала я использую код структуры сущности, ниже приведена таблица, из которой я получаю данные с определенными условиями.

public class Case
{
    public int CaseId { get; set; }
    public string Name { get; set; }
    public DateTime StartDateTime { get; set; }
    public DateTime? EndDateTime { get; set; }
    public virtual ICollection<CaseUser> CaseUsers { get; set; }
    public virtual ICollection<Sector> Sectors { get; set; }
    public virtual ICollection<CasePoaSerie> CasePoaSeries { get; set; }
    public virtual ICollection<Pod> Pods { get; set; }
    public virtual ICollection<Poa> Poas { get; set; }

    public Case()
    {
        CaseUsers = new Collection<CaseUser>();
        Sectors = new Collection<Sector>();
        CasePoaSeries = new Collection<CasePoaSerie>();
        Pods = new Collection<Pod>();
        Poas = new Collection<Poa>();
    }
}

Функция репозитория:

public List<Case> GetActiveCasesForUser(int userId)
    {
        var queryable = DbSet.Include(x => x.CaseUsers);
        queryable = queryable.Where(x => x.CaseUsers.Any(o => o.UserId == userId));
        queryable = queryable.Where(m => m.StartDateTime <= DateTime.Now && (m.EndDateTime == null || m.EndDateTime <= DateTime.Now));

        return queryable.ToList();
    }

Проблема:

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

Может ли кто-нибудь помочь мне, чтобы в моем наборе результатов было только содержимое первичной таблицы и содержимое таблицы caseusers, а в остальных таблицах - 0.

1 Ответ

0 голосов
/ 29 августа 2018

Ленивая загрузка в Entity Framework

Ленивая загрузка задерживает загрузку связанных данных, пока вы специально не запросите их. Это противоположность нетерпеливой загрузки.

Правила для отложенной загрузки:

  1. context.Configuration.ProxyCreationEnabled должно быть истинным.
  2. context.Configuration.LazyLoadingEnabled должно быть истинным.
  3. Свойство навигации должно быть определено как общедоступное, виртуальное. контекст НЕ будет выполнять отложенную загрузку, если свойство не определено как виртуальное.

Стремительная загрузка в Entity Framework

Стремительная загрузка - это процесс, при котором запрос для одного типа объекта также загружает связанные объекты как часть запроса, поэтому нам не нужно выполнять отдельный запрос для связанных объектов. Стремительная загрузка достигается с помощью метода Include ().

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