我有一个使用Active Record进行数据检索的现有应用程序。它是在VB.NET中(我第一次做VB.NET;我通常在C#中工作)。我正在构建一个返回对象List(Of T)
的方法。
当前模式使用SQLDataAdapter
填充数据表。当我填充数据表时,我可以将记录添加到List(Of T)
,但是有更好的方法可以做到这一点。
有什么想法吗?我没有结婚使用SQLDataAdapter
,如果有更好的方法可以避免它......
答案 0 :(得分:3)
由于你还没有任何回应......
我自己没有使用Active Record,所以我不知道在什么时候会产生任何差异但是让我觉得阅读DataTable
和 a { {1}}在某种程度上重复了一些事情。
如何从List<T>
填充List<T>
呢?在使用SqlDataReader
移动结果时,从当前行创建一个新对象并将其添加到列表中。如果你需要为各种不同的类型做这件事,我会写一个通用的方法,按照以下方式:
Read()
然后,您可以使用lambda表达式或匿名方法实现转换器。
或者你可以让扩展方法定位命令而不是public static List<T> ToList<T>(this SqlDataReader reader,
Func<SqlDataReader, T> rowConverter)
{
List<T> ret = new List<T>();
while (reader.Read())
{
ret.Add(rowConverter(reader));
}
return ret;
}
- 它可以处理调用SqlDataReader
,转换每一行然后处理读者。
(这是一个有点奇怪的签名,因为ExecuteReader
代表迭代器和当前行;只是API的一个怪癖。)
我可能错过了更深层次的东西 - 如果这没有帮助,你能解释一下原因吗,或许作为一个问题编辑?