Читатель не будет сбрасывать строки; Читатель довольно хорошо проверен. Глотание исключений не поможет. Если бы мне пришлось угадывать, проблема в том, что вы добавляете один и тот же item
снова и снова. Фактически, вы добавляете его N + 1 раз (вы добавляете его один раз вверху, даже если строки не возвращаются).
Тем не менее, могу ли я предложить: просто используйте что-то вроде dapper , который делает все выше, кроме a: он делает это правильно и b: он высоко оптимизирован (он испускает собственный IL, чтобы избежать постоянного отражения и кеширует что ил). Это было бы что-то вроде:
var list = connection.Query<T>(procName, namedArgs,
commandType: CommandType.StoredProcedure).ToList();
, где будет namedArgs
, для передачи @id
и @name
, например:
new {id=123, name="abc"}
т.е.
int id = ...
string name = ...
var list = connection.Query<T>("MyProc", new {id, name},
commandType: CommandType.StoredProcedure).ToList();