使用反射与数据库链接的通用列表
Posted
技术标签:
【中文标题】使用反射与数据库链接的通用列表【英文标题】:Generic List linked with Database using Reflection 【发布时间】:2013-07-10 06:16:08 【问题描述】:我有课
public class UserInfo
public int ID get; set;
public string Name get; set;
public string Address get; set;
我需要在数据库之间建立一个链接,使用以下代码:
using (SqlDataReader reader = cmd.ExecuteReader())
while (reader.HasRows)
在数据库的所有行上使用反射。
并将它们存储到通用列表中:
List<UserInfo> users = new List<UserInfo>();
我明白了!!
【问题讨论】:
为什么不使用many available ORMs 之一而不是自己滚动? 这是你的意思吗? ***.com/questions/12662318/… 发布您的发现作为答案 【参考方案1】:我明白了!!
这就是结果,也许有人需要它!
public List<UserInfo> GetAllUsers()
List<UserInfo> users = new List<UserInfo>();
try
using (SqlConnection sqlConnection = connectionString)
using (SqlCommand cmd = new SqlCommand())
cmd.CommandText = "dbo.GetAllUsers";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = sqlConnection;
sqlConnection.Open();
using (SqlDataReader dataReader = cmd.ExecuteReader())
if (dataReader.HasRows)
while (dataReader.Read())
UserInfo user = new UserInfo();
PropertyInfo[] pList = typeof(UserInfo).GetProperties();
foreach (PropertyInfo pi in pList)
object value = dataReader[pi.Name];
if (!value.GetType().Equals(typeof(DBNull)))
users.GetType().GetProperty(pi.Name, BindingFlags.Public | BindingFlags.Instance).SetValue(user, value, null);
users.Add(user);
else
users = null;
sqlConnection.Close();
catch (Exception)
return null;
return users;
【讨论】:
以上是关于使用反射与数据库链接的通用列表的主要内容,如果未能解决你的问题,请参考以下文章