我想从包含2M记录的SQL Server表中检索数据。我正在使用Devexpress GridControl并尝试过这样一个简单的代码:
DataTable dt = new DataTable();
String sqlString = "select * from LARGETABLE left join TABLEB on LARGETABLE.ID=TABLEB.PARENTID";
SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConnection);
da.Fill(dt);
bindingSource1.DataSource = dt;
...
gridControl1.DataSource = bindingSource1
执行第da.Fill(dt)行后,某段时间后会出现 OutOfMemoryException 错误。
Microsoft Server Studio确实加载表没有问题,并显示网格中的所有2M +行。是否可以在c#中构建这样的数据浏览器并加载大型数据集而不会耗尽内存?
答案 0 :(得分:1)
我认为通过2M
和'DataTable'绑定BindingSource
记录并不是一个好主意。由于您使用的是DevExpress网格控件,我建议您使用 server data-binding modes (同步或异步)。您可以在“Regular Binding Mode vs Regular Server Mode vs Instant Feedback Mode”文章中阅读有关此概念的更多信息
要从服务器模式开始,请使用以下方法文章:
Server Mode: Binding to Data Source Using 'LINQ to SQL Classes'