C# DataReader反射获取实体类(model) & 实体类反射获取Dictionary2009-09-22 15:49
2013-04-24 11:07
471 查看
public static T FillModel<T>(IDataReader dr)
{
using (dr)
{
if (dr.Read())
{
List<string> field = new List<string>(dr.FieldCount);
for (int i = 0; i < dr.FieldCount; i++)
{
field.Add(dr.GetName(i).ToLower());
}
T model = Activator.CreateInstance<T>();
foreach (PropertyInfo property in model.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance))
{
if (field.Contains(property.Name.ToLower()) && !SqlBuilder.IsNullOrDBNull(dr[property.Name]))
{
property.SetValue(model, Convert.ChangeType(dr[property.Name], property.PropertyType), null);
}
}
return model;
}
}
return default(T);
}
public static List<T> FillModels<T>(IDataReader dr)
{
using (dr)
{
List<string> field = new List<string>(dr.FieldCount);
for (int i = 0; i < dr.FieldCount; i++)
{
field.Add(dr.GetName(i).ToLower());
}
List<T> list = new List<T>();
while (dr.Read())
{
T model = Activator.CreateInstance<T>();
foreach (PropertyInfo property in model.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance))
{
if (field.Contains(property.Name.ToLower()) && !SqlBuilder.IsNullOrDBNull(dr[property.Name]))
{
property.SetValue(model, Convert.ChangeType(dr[property.Name], property.PropertyType), null);
}
}
list.Add(model);
}
return list;
}
}
{
using (dr)
{
if (dr.Read())
{
List<string> field = new List<string>(dr.FieldCount);
for (int i = 0; i < dr.FieldCount; i++)
{
field.Add(dr.GetName(i).ToLower());
}
T model = Activator.CreateInstance<T>();
foreach (PropertyInfo property in model.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance))
{
if (field.Contains(property.Name.ToLower()) && !SqlBuilder.IsNullOrDBNull(dr[property.Name]))
{
property.SetValue(model, Convert.ChangeType(dr[property.Name], property.PropertyType), null);
}
}
return model;
}
}
return default(T);
}
public static List<T> FillModels<T>(IDataReader dr)
{
using (dr)
{
List<string> field = new List<string>(dr.FieldCount);
for (int i = 0; i < dr.FieldCount; i++)
{
field.Add(dr.GetName(i).ToLower());
}
List<T> list = new List<T>();
while (dr.Read())
{
T model = Activator.CreateInstance<T>();
foreach (PropertyInfo property in model.GetType().GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance))
{
if (field.Contains(property.Name.ToLower()) && !SqlBuilder.IsNullOrDBNull(dr[property.Name]))
{
property.SetValue(model, Convert.ChangeType(dr[property.Name], property.PropertyType), null);
}
}
list.Add(model);
}
return list;
}
}
相关文章推荐
- C# 反射之SqlDatareader转换为Model实体.
- asp.net DataReader DataTable 使用反射给给实体赋值
- java反射 获取 /List<实体> objData 泛型后的属性值
- 【C#】从文本获取实体对象
- C# 获取HTML网页内容SgmlReader
- 数学建模与数据科学简要(Mathematical model&Data science)
- 通过反射获取实体集合属性值并赋值给另一个实体集合
- C#使用反射机制获取类信息
- Android获取Manifest中<meta-data>元素的值
- MVC数据从Controller传递到View之ViewData & ViewModel
- C#中如何获取ItemsControl的DataTemplate中定义的控件?
- c#通过反射获取类上的自定义特性
- C# DataReader的详细用法
- asp.net实现利用反射,泛型,静态方法快速获取表单值到Model的方法
- 解决"There is already an open DataReader associated with this Command which must be closed first."
- c#反射机制学习和利用反射获取类型信息
- C# SqlDataReader读取多个结果集
- <Unity UGUI>使用c#反射实现UGUI文本显示的国际化
- C#Json数据反序列化为Dictionary并根据关键字获取指定的值
- C#利用反射动态调用DLL并返回结果,和获取程序集的信息