2014-11-01 35 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); 

我遇到了以下错误:

“无效试图调用段计数时,读取器已关闭”。

可能是这个错误的原因是什么?我如何执行上述映射?

回答

1

我以前在dataAccess.ExecuteDataReader()方法在返回之前无意中关闭SqlDataReader所使用的连接。如果该方法对SqlConnection和/或SqlCommand对象具有using块,则当返回SqlDataReader时,连接将自动关闭,因为它将离开using范围。

还有其他的可能性,但很难说这可能是其中一个没有看到ExecuteDataReader代码...

更新:另一种常见的模式是关闭的finally块的连接。这将产生相同的效果,因为DataReader的基础连接在返回到调用代码时会被关闭。所以,检查一下。或者任何其他明确致电.Close()