Oracle某个字段是Number类型,实体用了Int类型,底层查询代码就会报错:类型“System.Decimal”的对象无法转换为类型“System.Int32”。
#region DataReader转化为实体
protected T PopulateDataReaderToModel<T>(IDataReader reader) where T : new()
{
T item = default(T);
item = new T();
Type type = typeof(T);
List<string> DbFieldList = type.GetProperties().Where(s => s.Name != "DataTable_Action_").Select(s => s.Name).ToList<string>();
foreach (string info in DbFieldList)
{
if (reader[info] != null && reader[info] != System.DBNull.Value)
{
type.GetProperty(info).SetValue(item, reader[info], null);
}
}
return item;
}
#endregion
解决方法:
把实体Int类型改为decimal类型就好了。