我目前有2个包装类分别包含DataReader和DataRow。包装器类实现相同的接口IIndexer。使用它们是因为我有很多方法只是为列索引以获取值:
以下是示例: How can I read from a DataRow or a DataReader using the same code?
现在我需要为Insert-statements提供第3个选项。现在没有DataTable可以获得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相比,真的有开销吗?
谢谢-matti