使用AutoMapper我通過How can I easily convert DataReader to List<T>?與數據讀取器
去我想要實現的東西像什麼被接受爲在上面的鏈接的答案。
Scenrio:
我使用OdbcDataReader從數據庫中檢索。
而且我有一個模型類。僅供參考,此類的屬性是數據庫中列名稱的精確副本。我需要將這些列映射到屬性並返回列表 這可以使用Automapper完成。
使用AutoMapper我通過How can I easily convert DataReader to List<T>?與數據讀取器
去我想要實現的東西像什麼被接受爲在上面的鏈接的答案。
Scenrio:
我使用OdbcDataReader從數據庫中檢索。
而且我有一個模型類。僅供參考,此類的屬性是數據庫中列名稱的精確副本。我需要將這些列映射到屬性並返回列表 這可以使用Automapper完成。
像這樣的事情
public List<T> ReadData<T>(string queryString)
{
using (var connection = new SqlConnection(constr))
using (var command = new SqlCommand(queryString, connection))
{
connection.Open();
using (var reader = command.ExecuteReader())
if (reader.HasRows)
return Mapper.DynamicMap<IDataReader, List<T>>(reader);
}
return null;
}
定義類
public class MarkType
{
public int id { get; set; }
public string name { get; set; }
public DateTime inserted { get; set; }
}
使用
List<MarkType> lst = _helper.ReadData<MarkType>("SELECT [id],[name],[inserted] FROM [marktype]");
感謝您的寶貴意見 – Vikram 2014-09-08 01:00:47
對於任何在2014年12月29日之後引用此內容的人, Automapper項目已經在Automapper版本4.0和更高版本中移除了對「IDataReader」的支持。參考這個[提交](https://github.com/AutoMapper/AutoMapper/commit/33831e3b53ed1cd698558daa2db483906ec5c13a)。版本3.1.1(在NuGet上可用)仍然具有此功能。 – Cameron 2015-11-13 20:16:04
有一個[nuget軟件包](https://www.nuget.org/packages/AutoMapper.Data)將其添加回來(目前處於測試階段)。 [GitHub AutoMapper.Data](https://github.com/AutoMapper/AutoMapper.Data) – jhamm 2015-12-01 22:30:32
爲什麼你就不能使用這個問題的答案提供的解決方案?它看起來不依賴於特定的數據讀取器實現。 – Dirk 2014-09-05 08:01:38
請注意,在AutoMapper 1.1 - .Net 3.5的最後一個版本中 - ** DataReader映射區分大小寫**。以不區分大小寫的方式使用此版本AutoMapper需要修補,如https://github.com/AutoMapper/AutoMapper/issues/90 – stuartd 2014-09-05 15:13:44