使用反射写入实体类数据示例
示例中是通过数据库读取相关字段的值,然后根据字段名称写入相应字段的值,
这种方法适合需要针对特定字段更新值时比较有用,如果是整类的生成写入,则不如使用
JSON序列化和反序列化的方法方便快捷。
private void ReaderToObject(IDataReader reader,object targetObj)
{
for(int i=0;i<reader.FieldCount;i++)
{
System.Reflection.PropertyInfo propertyInfo=targetObj.GetType().GetProperty(reader.GetName(i));
if(propertyInfo!=null)
{
if(reader.GetValue(i)!=DBNull.Value)
{
if(propertyInfo.PropertyType.IsEnum)
{
propertyInfo.SetValue(targetObj,
Enum.ToObject(propertyInfo.PropertyType,reader.GetValue(i)),
null);
}
else
{
propertyInfo.SetValue(targetObj,reader.GetValue(i),null);
}
}
}
}
}
此种方法需要注意的是
- 实体类的命名最好与数据库中命名一致,如果有可能不一致,则需要有判断过程