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