如何在C#中没有DataRow / DataReader的索引器对象包含数据库行的数据

时间:2013-05-14 12:05:24

标签: c# ado.net datarow dbdatareader

我目前有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

0 个答案:

没有答案