记录包装服务


  IRecordWrapper 提供对 IDataRecord 对象的包装,主要解决各类数据获取方法在个别的数据库提供者中不受支持的问题。比如 OracleDataReader 中 GetBoolean 方法并未实现,因为在 Oracle 中没有 bool 类型,为了能识别为 bool 需要对数据进行转换。

  IRecordWrapper 的方法与 IDataRecord 的相对应,如下例代码摘录了部分数据包装:

[TestMethod]
public void TestExecuteReader()
{
    var sql = (SqlCommand)"select productid, productname from products";
        
    using (var db = DatabaseFactory.CreateDatabase())
    using (var reader = db.ExecuteReader(sql))
    {
        var wrapper = db.Provider.GetService<IRecordWrapper>();
        while (reader.Read())
        {
            var productId = wrapper.GetInt32(reader, 0);
            var productName = wrapper.GetString(reader, 1);
        }
    }
}