ObjectHelper的主要功能有:

1.通过反射获取Entity的实例的字段值和表名,跳过自增键并填入Dictionary<string,string>中。

 namespace RA.DataAccess.Common
{
internal static class ObjectHelper
{
/// <summary>
/// 获取Entity实例的字段名和值(用于更新和插入数据)
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static Dictionary<string,object> GetKeyValue(object obj){
var data = new Dictionary<string, object>();
foreach (var i in obj.GetType().GetProperties())
{
if (IsContainsAttribute(i.GetCustomAttributes(true))) continue;
var value = obj.GetType().GetProperty(i.Name).GetValue(obj, null);
data.Add(i.Name, value);
}
return data;
} /// <summary>
/// 是否包含自增键,在插入表时可以跳过自增键的设置
/// </summary>
/// <param name="attrs"></param>
/// <returns></returns>
private static bool IsContainsIndentityAttribute(IEnumerable<object> attrs)
{
return attrs.OfType<IdentityAttribute>().Any();
}
}
}

2.通过反射,为实例赋值,此处只是列举了常用的数据类型:int,string和DataTime

         /// <summary>
/// 为通过反射生成的实例赋值
/// </summary>
/// <typeparam name="T">实例的类型</typeparam>
/// <param name="obj">实例</param>
/// <param name="value">值</param>
/// <param name="key">成员名称</param>
public static void SetValue<T>(ref T obj, Object value, String key) where T : class
{
var property = obj.GetType().GetProperty(key);
var type = property.PropertyType.Name;
if (value is System.DBNull)
{
property.SetValue(obj, null, null);
return;
}
switch (type)
{
case "Int32":
property.SetValue(obj, int.Parse(value.ToString()), null);
break;
case "String":
property.SetValue(obj, value.ToString(), null);
break;
case "DateTime":
property.SetValue(obj, (DateTime)value, null);
break;
default:
property.SetValue(obj, value, null);
break;
}
}

最新文章

  1. 时光煮雨 Unity3D实现2D人物移动-总结篇
  2. CF687C. The Values You Can Make[背包DP]
  3. HDU 4135 Co-prime(容斥原理)
  4. jQuery的无new实例化
  5. WPF 判断是否为设计(Design)状态
  6. CABasicAnimation(CAKeyframeAnimation)keypath 取值
  7. 如何查找到文件以后,带目录一起拷贝到新的目录? cp --parents source destination
  8. JAVA I/O流 之入门
  9. jQuery图片切换插件jquery.cycle.js
  10. pip --upgrade批量更新过期的python库
  11. redis集群添加删除节点
  12. POJ-3617 Best Cow Line---字符串贪心
  13. inner join on (程序测试验证结果。) _学习贴
  14. informix 随笔
  15. Tensoflow API笔记(N) 设备指定
  16. 行为型---命令模式(Command Pattern)
  17. hdu 1978 How many ways(记忆化搜索)
  18. sqlserver2012 offset分页
  19. 第三个spring冲刺第8天
  20. opencv 学习资料

热门文章

  1. css3学习笔记(一)
  2. 常见tcp端口说明
  3. DpQuery.js
  4. js 滚动页面
  5. 蓝桥杯 第三届C/C++预赛真题(8) 密码发生器(水题)
  6. oracle锁一些知识
  7. Multiview
  8. SQL Server 数据库分离与附加(图文教程)
  9. 第一篇:《UNIX 环境高级编程》编译环境的搭建
  10. select循环读取数据