Лучший способ найти данные для EF

У нас есть БД, на которой включен CDC. Мы должны были найти данные на основе предоставленной даты. Итак, мы реализовали выборку данных через функции db.

Блок кода выглядит следующим образом:

private IQueryable<Letter> GetLetterQuery(DateTime? date = null)
    {
        IQueryable<Letter> dataSource = null;
        dataSource = DBContextHelper.Context.fnGetLetters(date);
        return dataSource;
    }
    public List<Letter> GetLetters(int attemptID, int cycle)
    {
        var dataSource = GetLetterQuery(DBContextHelper.CurrentDataVersion).Where(u => u.AttemptID == attemptID && u.Cycle == cycle).ToList();
        populateLettersChildEntities(dataSource, DBContextHelper.CurrentDataVersion);
        return dataSource;
    }

    private void populateLettersChildEntities(List<Letter> letters, DateTime? date = null)
    {
        letters.ForEach(u =>
            {
                u.Documents = DBContextHelper.Context.fnGetDocuments(date).Where(d => d.LetterID == u.ID).ToList();
                u.LetterDoctors = DBContextHelper.Context.fnGetLetterDoctor(date).Where(d => d.LetterID == u.ID).ToList();
                u.LetterFields = DBContextHelper.Context.fnGetLetterFields(date).Where(d => d.LetterID == u.ID).ToList();
                u.LetterDoctors.ForEach(d =>
                {
                    d.Doctor = DBContextHelper.Context.fnGetDoctors(date).FirstOrDefault(q => q.IDdoctor == d.DoctorID);
                    d.Letter = u;
                });
            });
    }

Мы должны были заполнить соответствующие поля. Наша проблема в том, что это определенно приводит ко многим вызовам БД. Есть ли способ уменьшить количество звонков? AFAIK, мы не можем использовать включение с такими вызовами БД.

0 ответов

Другие вопросы по тегам