我目前有 2 个包装类来分别包含 DataReader 和 DataRow。包装类实现相同的接口 IIndexer。之所以使用它们,是因为我有很多方法可以对列进行索引以获取值:
这是示例: 如何使用相同的代码从 DataRow 或 DataReader 中读取?
现在我需要插入语句的第三个选项。现在没有 DataTables 来获取 DataRow,也不需要从 Db 中读取。
这可以通过使用 IndexerWrapper(或 DictionaryWrapper)来完成:
public class IndexerWrapper : IIndexer
{
private readonly Dictionary<string, object> _indexer;
public DataReaderWrapper(Dictionary<string, object> indexer)
{
_indexer = indexer;
}
public object this[string index]
{
get { return _indexer[index]; }
}
}
我已经有了数据库表的列信息,所以我会循环列并将列名添加为键。
有更好的方法吗?这不是那么方便,因为我必须初始化它。性能呢?这可能会在将来用于大质量,现在为每个项目存储列名。与 DataRows 的集合相比,真的有开销吗?
谢谢-马蒂