2013-03-20 4 views
0

Я хотел бы получить данные из таблицы SQL Server, содержащей записи 2M. Я использую DevExpress GridControl и попытался простой код, как это:OutOfMemoryException при загрузке большой таблицы в DataSet

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 (дт) выполняется, будет выдано сообщение OutOfMemoryException ошибка через некоторое время.

Microsoft Server Studio загружает таблицу без проблем и отображает все строки 2M + в сетке. Возможно ли построить такой браузер данных в C# и загрузить большие наборы данных без исчерпания памяти?

ответ

1

Я считаю, что привязка 2M записей через BindingSource и «DataTable» - не очень хорошая идея. Поскольку вы используете gridcontrol DevExpress, я предлагаю вам использовать их server data-binding modes (синхронный или асинхронный). Подробнее об этом можно прочитать в статье «Regular Binding Mode vs Regular Server Mode vs Instant Feedback Mode».
Для начала в режиме сервера используйте следующие статьи How-To: Server Mode: Binding to Data Source Using 'LINQ to SQL Classes'

 Смежные вопросы

  • Нет связанных вопросов^_^