访问时填充数据集表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了访问时填充数据集表相关的知识,希望对你有一定的参考价值。

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

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

答案

你要做的是被称为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

以上是关于访问时填充数据集表的主要内容,如果未能解决你的问题,请参考以下文章

如何命名在存储过程中返回的数据集表?

如何命名在存储过程中返回的数据集表?

在哪里以及如何使用片段填充我的标签

在一些片段之间填充对象变量的最佳方法

VB datagrid - 设计绑定 - 表格 A 的数据集表适配器 SLOW;表格 B 的 FAST

重新加载时刷新片段