2014-11-01 3 views
0

У меня есть таблица в SQL Server с следующей конструкцией:Automapper ошибки во время объекта популяции

Name VARCHAR(50) 
Duration TIME(7) 
Status VARCHAR(10) 

Данные в таблице выглядит следующим образом:

ABCD_TT 00:00:24:6823454 PASS 

У меня есть следующий DTO в моя заявка:

public class Entity 
{ 
    public string Name { get; set; } 
    public TimeSpan Duration { get; set; } 
    public string Status { get; set; } 
} 

Я использую AutoMapper для отображения данных в объекты. Ниже приводится код:

IDataReader dr = dataAccess.ExecuteDataReader(sQuery); 
lstData = AutoMapperUtil<Entity>.MapObject(dr); 

Я встречая следующее сообщение об ошибке:

«недопустимая попытка вызвать FieldCount, когда читатель закрыт».

В чем причина этой ошибки? Как я мог выполнить вышеуказанное сопоставление?

ответ

1

Я получил это раньше, когда метод dataAccess.ExecuteDataReader() непреднамеренно закрывает соединение, используемое SqlDataReader перед возвратом. Если этот метод имеет using блоки для SqlConnection и/или SqlCommand объектов, то соединение будет автоматически закрыто при возврате SqlDataReader, так как оно оставляет область using.

Есть и другие возможности, но это трудно сказать, какой из них может быть, не видя ExecuteDataReader код ...

UPDATE: Еще один общий шаблон, чтобы закрыть соединение в finally блоке. Это будет иметь тот же эффект, поскольку базовое соединение DataReader будет закрыто к моменту его возвращения в вызывающий код. Итак, проверьте это тоже. Или любой другой явный вызов .Close().

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