WEB开发网
开发学院软件开发C语言 C#发现之旅:基于反射和动态编译的快速ORM框架(上... 阅读

C#发现之旅:基于反射和动态编译的快速ORM框架(上)

 2010-09-30 21:08:28 来源:WEB开发网   
核心提示: InnerReadRecord需要代码生成器来生成代码进行扩展,对于DB_Employees,C#发现之旅:基于反射和动态编译的快速ORM框架(上)(9),其扩展的代码为protectedoverrideobjectInnerReadRecord(System.Data.IDataReaderr

InnerReadRecord需要代码生成器来生成代码进行扩展,对于DB_Employees,其扩展的代码为

protected override object InnerReadRecord( System.Data.IDataReader reader , int[] FieldIndexs )
{
    MyORM.DB_Employees record = new MyORM.DB_Employees();
    int index = 0 ;
   
    index = FieldIndexs[ 0 ]; // 读取字段 EmployeeID
    if( index >= 0 )
    {
        record.EmployeeID = ConvertToInt32( reader.GetValue( index ) , ( int ) 0) ;
    }
   
    index = FieldIndexs[ 1 ]; // 读取字段 LastName
    if( index >= 0 )
    {
        record.LastName = ConvertToString( reader.GetValue( index ) , null ) ;
    }
    读取其他字段值……
    return record ;
}

在这段自动生成的代码中,参数reader就是类型为IDataReader的数据读取器,而FieldIndexs就是GetFieldIndexs的返回值。在InnerReadRecord函数中会一次读取FieldIndexs的元素值,根据属性的数据类型而调用ConvertToInt32,ConvertToString等一系列的ConvertTo函数,而这一系列的函数已经在基础类型RecordORMHelper中定义好了。

从这个自动生成的代码可以看出,ORM框架使用实体类的属性,GetFieldIndexs和数据读取器实现了如下的映射过程

C#发现之旅:基于反射和动态编译的快速ORM框架(上)

上一页  4 5 6 7 8 9 10  下一页

Tags:发现 之旅 基于

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接