您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何轻松将DataReader转换为列表?[重复]

如何轻松将DataReader转换为列表?[重复]

我见过使用反射和属性或字段上的属性将DataReader映射到对象的系统。(有点像什么呢LinqTosql。)他们节省一点打字和编码的DBNull等时,一旦缓存生成代码,他们可以更快那么大多数手工编写代码,以及可减少错误数量,所以不要考虑 了如果您经常这样做,则是“公路”。

有关此示例,请参阅“ .NET中的反射防御”

然后,您可以编写如下代码

class CustomerDTO  
{
    [Field("id")]
    public int? CustomerId;

    [Field("name")]
    public string CustomerName;
}

using (DataReader reader = ...)
{    
   List<CustomerDTO> customers = reader.AutoMap<CustomerDTO>()
                                    .ToList();
}

(AutoMap()是扩展方法

@Stilgar,感谢一个 评论

如果 ,你很可能会使用更好的NHibernate,EF或LINQ到SQL等 但是在旧的项目(或其他(有时是有效的)的原因,如“非我发明”,“存储特效的爱”等)并非总是可以使用ORM,因此重量更轻的系统对于“袖手旁观”很有用。

如果您每个人也需要编写大量IDataReader循环,那么您将看到减少编码(和错误)的好处, 使用的系统 。这并不是说它是一个很好的体系结构。

我假设CustomerDTO不会走出数据访问层,而复合对象等将由使用DTO对象的数据访问层建立。

在我写了这个答案的几年后,Dapper进入了.NET的世界,这可能是编写onw AutoMapper的一个很好的起点,也许它将完全消除您这样做的需要。

其他 2022/1/1 18:15:17 有676人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶