访问时填充数据集表

问题描述 投票:-1回答:1

我有一个C#数据集,在应用程序启动时从数据库加载大量数据。这会降低应用程序启动速度。我希望将数据集表保留为空并在第一次访问表时从数据库填充一次,因此任何表都将保持为空,直到第一次访问该表为止。

做这个的最好方式是什么?

c# database winforms performance dataset
1个回答
0
投票

你要做的是被称为Lazy Loading

最简单的方法是在服务层执行以下操作:

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

© www.soinside.com 2019 - 2024. All rights reserved.