2014-11-01 42 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()