Получение данных из большого количества независимых таблиц из БД с использованием Entity Framework codefirst - PullRequest
0 голосов
/ 06 августа 2020

Я создаю веб-API. Мне нужно получить ~ 50 табличных данных за один запрос для некоторых вычислений. Поскольку я получаю все эти таблицы вместе, время отклика веб-API велико. Все таблицы независимы. Я использую шаблон репозитория и первый подход EF-кода. Любые предложения по увеличению времени отклика для данного сценария:

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

public static class FetchDataExtensions
{
    public static DbData GetData(this IRepository repo, Request request)
    {
        return new DbData
                   { 
                       // fetching data from db using repository pattern
                       Table1 = repo.GetTable1Data(request.name, request.gender),
                       Table2 = repo.GetTable2Data(request.gender),
                       Table3 = repo.GetTable3Data(),
                       ........
                       Table50 = repo.GetTable50Data()
                   };   
    }
}

Repository.cs

public class Repository : IRepository
{
     private readonly DBContext context;

     public Repository(DBContext context)
     { 
          this.context = context;
     }

     public Table1 GetTable1Data(string name, string gender)
     { 
         try
         {
             return context.Table1.Single(a => a.Name.Equals(name.ToString(), StringComparison.OrdinalIgnoreCase)
                                               && a.Gender.Equals(gender.ToString(), StringComparison.OrdinalIgnoreCase));
         }
         catch (Exception ex)
         {}
    }
}

1 Ответ

0 голосов
/ 06 августа 2020

Вы можете использовать концепцию asyn c -wait threading. Если одновременно несколько протекторов будут считывать данные, это поможет вам минимизировать время чтения таблицы.

для справки [пример asyn c -await] [1] [1]: https://www.tutorialspoint.com/entity_framework/entity_framework_asynchronous_query.htm

часть из которых вы можете использовать индексацию. Посмотрите, как применить индексирование к таблице в EF.

...