如何让SqlDataReader 映射到实体类

fuss228 2009-07-16 04:14:00
public BossClub GetBossClub(SqlParameter[] parameters)
{
BossClub bc = null;
SqlDataReader sdr = DbHelperSQL.RunProcedure("UP_BossClub_GetModel", parameters);
if (sdr.HasRows)
{
sdr.Read();
bc = new BossClub();
bc.BID= sdr.GetInt32(0);
bc.Title = sdr.GetString(1);
bc.Body = sdr.GetString(2);
bc.CreateDate = sdr.GetDateTime(3);
}
return bc;

DbHelperSQL.RunProcedure()返回的是SqlDataReader 如何才能让它映射到实体类BossClub
而不去写if (sdr.HasRows)
{
sdr.Read();
bc = new BossClub();
bc.BID= sdr.GetInt32(0);
bc.Title = sdr.GetString(1);
bc.Body = sdr.GetString(2);
bc.CreateDate = sdr.GetDateTime(3);
}
一个个赋值!!!!
...全文
287 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuss228 2009-07-17
  • 打赏
  • 举报
回复
如果用linq 如何映射 能给个demo吗?
沉序员 2009-07-16
  • 打赏
  • 举报
回复
niu
BossFriday 2009-07-16
  • 打赏
  • 举报
回复
通过反射获得类的属性,然后去掉用setValue方法赋值
yzone 2009-07-16
  • 打赏
  • 举报
回复
只有封装了三
wl_bdqn 2009-07-16
  • 打赏
  • 举报
回复
不过用到反射,序列化,泛型什么的 比较麻烦
wl_bdqn 2009-07-16
  • 打赏
  • 举报
回复
映射不也是负值嘛,你可以自己封装一个累,实现每个类的自动封装
/// <summary>
/// 填充实体类
/// </summary>
/// <typeparam name="T">实体类的类型</typeparam>
/// <param name="list">IList</param>
/// <param name="idr">IDataReader对象</param>
/// <param name="type">Type type = typeof(T)</param>
/// <param name="info">PropertyInfo[] info = type.GetProperties()</param>
static void SetModel<T>(IList<T> list, IDataReader idr, Type type, PropertyInfo[] info) where T : new()
{
while (idr.Read())
{
T t = new T();
int count = idr.FieldCount;//获取列数
object[] values = new object[count];
idr.GetValues(values);//获取当前记录的全部属性字段
for (int i = 0; i < info.Length; i++)
{
type.InvokeMember(info[i].Name, BindingFlags.SetProperty | BindingFlags.Public | BindingFlags.Instance, null, t, new object[] { values[i] });//向t对象添加数据
}
list.Add(t);
}
}

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧