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

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

 2010-09-30 21:08:28 来源:WEB开发网   
核心提示: 我们设计快速ORM框架的程序结构如图所示图片看不清楚?请点击这里查看原图(大图),框架中包含了一个实体类型注册列表,C#发现之旅:基于反射和动态编译的快速ORM框架(上)(3),列表中包含了实体类型和相应的RecordORMHelper对象,应用程序在使用框架前必须注册实体类型,这种操作在使用V

我们设计快速ORM框架的程序结构如图所示

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

图片看不清楚?请点击这里查看原图(大图)。

框架中包含了一个实体类型注册列表,列表中包含了实体类型和相应的RecordORMHelper对象。应用程序在使用框架前必须注册实体类型,向实体类型注册列表添加将要操作的实体类型,应用程序注册实体列表时不会立即导致代码的自动生成和编译。

我们首先定义了一个基础的抽象类型RecordORMHelper,该类型定义了处理实体类型和数据库的映射操作,主要包括从一个System.Data.IDataReader读取数据并创建实体类型,为新增,修改和删除数据库记录而初始化System.Data.IDbCommand对象等等。该类型是快速ORM框架的核心处理对象,数据库处理模块将使用RecordORMHelper来作为统一的接口来处理实体类和数据库的映射操作。

代码生成器分析实体类型列表中所有没有处理的实体类型,获得其中的使用BindTableAttribute和BindFieldAttribute特性保存的对象和数据库的映射关系,针对每一个实体类型创建一个Class的代码,该Class是从RecordORMHelper上派生的,并实现了RecordORMHelper预留的接口。代码生成器可以同时为多个实体类型创建C#源代码,此时一份C#源代码中包含了多个从RecordORMHelper派生的Class类。

C#代码编译器接受代码生成器生成的代码,进行编译生成一个临时程序集,该程序集中就包含了多个派生自RecordORMHelper的类型,每一个类型都专门处理某种实体类型。编译器在编译程序是需要指定所引用的其他程序集,这里包括 mscorlib.dll,System.dll和System.Data.dll,此外还包括类型RecordORMHelper所在的程序集,也就是包括快速ORM框架的程序集,这里的程序集不一定是DLL格式,也可能是EXE格式。于是我们编译程序时引用了一个EXE,这种操作在使用VS.NET等开发工具时是禁止的。从这里可以看出,一些使用VS.NET开发工具所不可能实现的功能我们可以编程使用.NET框架来实现。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:发现 之旅 基于

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