1. public class Table2Entity<T> where T : class,new()
  2. {
  3. public static List<T> GetEntitys(DataTable dt)
  4. {
  5. Dictionary<string, string> columns = new Dictionary<string, string>();
  6. foreach (DataColumn item in dt.Columns)
  7. {
  8. columns.Add(item.ColumnName.Trim().ToLower(), item.ColumnName);
  9. }
  10. List<T> result = new List<T>();
  11. var proptetis = typeof(T).GetProperties(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly);
  12. foreach (DataRow dr in dt.Rows)
  13. {
  14. T obj = new T();
  15. foreach (var item in proptetis)
  16. {
  17. var attributes = item.GetCustomAttributes(typeof(RenameAttribute), true);
  18. var columnName = (attributes != null && attributes.Length > ) ? ((RenameAttribute)(attributes[])).Name.Trim().ToLower() : item.Name.Trim().ToLower();
  19. if (columns.Keys.Contains(columnName))
  20. {
  21. var mt = item.GetSetMethod(true);
  22. var value = dr[columns[columnName]];
  23. if (value == null || value == DBNull.Value || string.IsNullOrWhiteSpace(value.ToString())) continue;
  24. if (item.PropertyType == typeof(string))
  25. mt.Invoke(obj, new object[] { value.ToString() });
  26. else if (item.PropertyType == typeof(int) || item.PropertyType == typeof(int?))
  27. mt.Invoke(obj, new object[] { Convert.ToInt32(value) });
  28. else if (item.PropertyType == typeof(long) || item.PropertyType == typeof(long?))
  29. mt.Invoke(obj, new object[] { Convert.ToInt64(value) });
  30. else if (item.PropertyType == typeof(double) || item.PropertyType == typeof(double?))
  31. mt.Invoke(obj, new object[] { Convert.ToDouble(value) });
  32. else if (item.PropertyType == typeof(decimal) || item.PropertyType == typeof(decimal?))
  33. mt.Invoke(obj, new object[] { Convert.ToDecimal(value) });
  34. else if (item.PropertyType == typeof(DateTime) || item.PropertyType == typeof(DateTime?))
  35. mt.Invoke(obj, new object[] { Convert.ToDateTime(value) });
  36. else if (item.PropertyType == typeof(float) || item.PropertyType == typeof(float?))
  37. mt.Invoke(obj, new object[] { float.Parse(value.ToString()) });
  38. else if (item.PropertyType == typeof(bool))
  39. mt.Invoke(obj, new object[] { bool.Parse(value.ToString()) });
  40. else if (item.PropertyType.BaseType == typeof(System.Enum))
  41. {
  42. mt.Invoke(obj, new object[] { Convert.ToInt32(value) });
  43. }
  44. }
  45. }
  46. result.Add(obj);
  47. }
  48. return result;
  49. }
  50. }

table 转实体的更多相关文章

  1. C# 泛型实现Table与实体的相互转换

    public class ModelHandler<T> where T : new() { /// <summary> /// Table转换成实体 /// </sum ...

  2. @Entity 和 @Table

    Java Persistence API定义了一种定义,可以将常规的普通Java对象(有时被称作POJO)映射到数据库.这些普通Java对象被称作Entity Bean.除了是用Java Persis ...

  3. JPA之@Entity、@Table、@Column、@Id

    Java Persistence API定义了一种定义,可以将常规的普通Java对象(有时被称作POJO)映射到数据库.这些普通Java对象被称作Entity Bean.除了是用Java Persis ...

  4. JPA实体类中的注解

    @Entity 标注于实体类上,通常和@Table是结合使用的,代表是该类是实体类@Table 标注于实体类上,表示该类映射到数据库中的表,没有指定名称的话就表示与数据库中表名为该类的简单类名的表名相 ...

  5. MyEclipse从数据库反向生成实体类通过Hibernate的方式----mysql数据库实例

    1.我们通过DB与数据库建立连接 2.建立web工程,构建Hibernate框架 3.通过table生成实体类

  6. ToolsCodeTemplate使用

    最近学习使用CodeSmith代码生成器 CodeSmith 是一种语法类似于asp.net的基于模板的代码生成器,程序可以自定义模板,从而减少重复编码的劳动量,提高效率. 作用:CodeSmith ...

  7. 7.DataAnnotations(数据注解)【Code-First 系列】

    EF Code-First提供了一系列的数据注解的特性,你可以将其应用到你的领域类和属性中,数据注解属性重写了EF默认的约定. System.ComponentModel.DataAnnotation ...

  8. spring4+hibernate4+maven环境搭建

    本文主要介绍利用maven搭建spring4+hibernate4开发环境. 首先我们创建一个maven项目,具体步骤就不详细介绍了,看看我们pom.xml文件 <project xmlns=& ...

  9. 详谈Hibernate框架关系映射!

    接触Hibernate也有一小段的时间了,愈发的觉得Hibernate是个神奇的东西,为什么这么说呢?因为你可以不懂一行sql,直接面向对象,就可以将数据直接保存到数据库去!! 你还可以保存一个对象, ...

随机推荐

  1. sql中表级约束和列级约束

    sql中表级约束和列级约束,在SQL SERVER中, (1) 对于基本表的约束分为列约束和表约束约束是限制用户输入到表中的数据的值的范围,一般分为列级约束与表级约束.列级约束有六种:主键Primar ...

  2. 在MFC里面使用ADO访问微软的ACCESS数据库 实现增删改查

    声明:百度以外的公司可以自由转载该文. 正如我上一篇博文提到,ADO这货和MFC没有任何关系,ADO 是一个独立的组件.所以为了使用ADO 我们就要把ADO引入到MFC中. ADO是硬盘上的表现形式是 ...

  3. 常用的系统架构 web服务器之iis,apache,tomcat三者之间的比较

    常用的系统架构是: Linux + Apache + PHP + MySQL Linux + Apache + Java (WebSphere) + Oracle Windows Server 200 ...

  4. django之路由(url)

    前言: Django大致工作流程 1.客户端发送请求(get/post)经过web服务器.Django中间件. 到达路由分配系统 2.路由分配系统根据提取 request中携带的的url路径(path ...

  5. Winter-1-D Max Sum 解题报告及测试数据

    Time Limit:1000MS Memory Limit:32768KB Description Given a sequence a[1],a[2],a[3]......a[n], your j ...

  6. 《UML和模式应用》读书笔记(一)面向对象分析和设计简单示例

    在开始进行对象分析和设计之前,先通过“扔骰子”这个软件(游戏者扔两个骰子,如果总是是7,则赢,否则输),来简单分析下这个过程. 1:用例 需求分析,可能包括人们如何应用的场景或情节,这些都可以被编写成 ...

  7. Salesforce中Html的转义,InputField和RemoteAction

    在Salesforce的开发中,有时候需要在对象中插入记录,其中有的字段需要插入Html,但是对于输入Html的域,大多数框架和网站都需要做Html的转义处理,防止XSS或者SQL注入攻击.有时候我们 ...

  8. iOS开发之HelloKitty(移动社交平台项目)

    iOS开发之HelloKitty(移动社交平台项目,2015.3,parishe)

  9. 一个url加载的全过程

    最近在进行前端面试方面的一些准备,遇到了一个经典前端问题,一个url从输入到页面加载中间到底发生了什么,以前也认真想过这个问题,但是当时回答的都不全面,现在来好好总结一下: 总体来说分为以下六个步骤: ...

  10. web.xml context-param配置

    context-param 为上下文初始化参数 解析:每个<context-param>元素含有一对参数名和参数值(param-name和param-value),用作应用的Servlet ...