Заполните таблицы набора данных при доступе - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть набор данных C #, который загружается из базы данных с большим количеством данных при запуске приложения. Это замедляет запуск приложения. Я хочу оставить таблицы наборов данных пустыми и заполнить их из базы данных один раз, когда к таблице обращаются в первый раз, поэтому любая таблица остается пустой до тех пор, пока к ней нет доступа в первый раз.

Каков наилучший способ сделать это?

1 Ответ

0 голосов
/ 15 сентября 2018

То, что вы пытаетесь сделать, называется Ленивая загрузка

Самый простой способ сделать это - сделать что-то подобное на вашем сервисном уровне:

public class EmployeeManager : IEmployeeManager
{
    private readonly IEmployeeRepository _employeeRepository;

    private IEnumerable<Employee> _employees;

    public EmployeeManager(IEmployeeRepository employeeRepository)
    {
        _employeeRepository = employeeRepository;
    }

    public IEnumerable<Employee> GetEmployees()
    {
        return
            _employees ?? (_employees = _employeeRepository.GetAll());
    }
}

Обратите внимание, что коллекция _employees заполняется только при первом вызове метода GetEmployees(). Поэтому, предполагая, что ваш код доступа к данным разделен на другом уровне, вы можете просто поместить эту логику туда, и данные будут заполняться только тогда, когда это необходимо.

Другим способом решения этой проблемы было бы внедрение Paging, чтобы вы получали только те данные, которые вам нужны, в виде кусков, а не загружали целые таблицы в память, вот дополнительная информация об этом:

http://www.codeproject.com/KB/database/PagingResults.aspx

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