2015-09-28 2 views
0

У меня есть код ниже, который в настоящее время возвращает список бизнес-объектов. Хотя он работает, я хочу уменьшить количество повторяющегося кода, который мы сидим. Поскольку приведенный ниже код относится к конкретному типу - каждый BO имеет свой собственный метод ConnecToDbAndGetItems() - весь этот метод дублируется для каждого BO.Учитывая OracleDataReader, как мне вернуть весь набор результатов?

con.Open(); 
OracleDataReader dr = cmd.ExecuteReader(); 
BuildListOfItems(dr, ref itemsToReturn); 
con.Close(); 
dr.Close(); 

Я предпочел бы что-то вроде этого, небольшое постепенные изменения, которые легко управлять:

con.Open(); 
OracleDataReader dr = cmd.ExecuteReader(); 

// Gimme all the data here and 
// return that to another method for building BOs 

con.Close(); 
dr.Close(); 

Конечным результатом является общий механизм поиска данных, что все GetXXX() методы могут вызывать и результаты (массив, список, ???) передаются объекту-строителю для дальнейшей обработки.

Как я могу получить все записи от читателя?

+1

Оформить заказ OracleDataAdapter - можно заполнить DataTable всеми результатами. https://msdn.microsoft.com/en-us/library/system.data.oracleclient.oracledataadapter(v=vs.110).aspx – dbugger

ответ

1

Вы можете использовать DataTable так:

DataTable result = new DataTable(); 
result.Load(dr); 

Мы использовали как DataAdapter и DataReader в нашем проекте. Могу сказать, что DataReader обеспечивает лучшую производительность. Для повышения производительности вы должны установить свойство FetchSize.