我循环遍历SqlDataReader
,并设置对象的属性。我正在做很多重复的工作,我想知道这是否是使用4.0委托框架和泛型的好地方。我对blackbox这个框架(实体,MVC等)不感兴趣。
ConvertReaderToMyCustomType
是我当前的方法,以及相关的扩展方法HasColumn
。
public static List<MyCustomType> ConvertReaderToMyCustomType(this SqlDataReader reader)
{
var tempCollection = new List<MyCustomType>();
int colX = reader.GetOrdinal("PropertyX");
while (reader.Read())
{
MyCustomType tracking = new MyCustomType();
if (reader.HasColumn("PropertyX"))
{
tracking.PropertyX = reader[colX];
//etc.
}
}
}
public static bool HasColumn(this IDataRecord dr, string columnName)
{
for (int i = 0; i < dr.FieldCount; i++)
{
if (dr.GetName(i).Equals(columnName, StringComparison.InvariantCultureIgnoreCase))
return true;
}
return false;
}
另外,如果tracking.PropertyX是DateTime怎么办?如果存在多种类型的多个属性,那么如何以通用方式处理转换?