首页 > 其他 > 详细

DataReader反射泛型对象

时间:2014-08-16 18:30:00      阅读:359      评论:0      收藏:0      [点我收藏+]

      昨天听同学说,要把DataReader对象转成实体对象,要写一个通用的方法。想了下用反射应该可以做到。项目中一般都是用第三方组件来做数据访问层,如,Nhibernate、ef等。于是自己想写个简单例子玩玩。

      其实,实现起来和简单。一个泛型方法搞定。代码如下:

bubuko.com,布布扣
 1     public List<T> ToList<T>(string _sql) where T :class ,new()
 2         {
 3             
 4             using (var conn = new SqlConnection(connStr))
 5             {
 6                 using (var comm = new SqlCommand(_sql, conn))
 7                 {
 8                     conn.Open();
 9                     SqlDataReader dataReader = comm.ExecuteReader();
10                     if (dataReader.HasRows)
11                     {
12                         List<T> dataList = new List<T>();
13                         
14                         while ((dataReader.Read()))
15                         {
16                             T obj = new T();
17                             //获取泛型对象的所有属性
18                             var properties = obj.GetType().GetProperties();
19                             foreach (var property in properties)
20                             {
21                                 for (int i = 0; i < dataReader.FieldCount; i++)
22                                 {
23                                     //查找与属性名称相同的列
24                                     if (dataReader.GetName(i).Equals(property.Name,StringComparison.CurrentCultureIgnoreCase))
25                                     {
26                                         //给新建的obj对象的属性赋值
27                                         property.SetValue(obj,dataReader[i]);
28                                     }
29                                 }
30                             }
31                             dataList.Add(obj);
32                         }
33                         conn.Close();
34                         return dataList;
35                     }
36                   
37                 }
38             }
39             return null;
40         }
View Code


     

      完整代码链接:http://download.csdn.net/detail/ybealq/7767735

DataReader反射泛型对象,布布扣,bubuko.com

DataReader反射泛型对象

原文:http://www.cnblogs.com/7579/p/3916661.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!