记录包装服务
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);
}
}
}