C#发现之旅:基于反射和动态编译的快速ORM框架(下)
2010-09-30 21:08:22 来源:WEB开发网若一切顺利,则使用CompilerResults.CompiledAssembly就能获得编译后生成的程序集,然后我们使用反射操作,对每一个实体类型从动态编译生成的程序集中获得对应的数据库帮助器的类型,然后使用System.Activator.CreateInstance函数就能实例化一个数据库操作帮助器,将这个帮助器放置在实体类型注册列表中等待下次选用。
操作数据库
我们使用动态编译技术获得了数据库操作帮助器,现在我们就使用这些帮助器来实现高速的ORM操作。
查询数据 ReadObjects
快速ORM框架中,定义了一个ReadObjects的函数,用于从数据库中读取数据并生成若干个实体对象,其代码为
public System.Collections.ArrayList ReadObjects( string strSQL , Type RecordType )
{
this.CheckConnection();
if( strSQL == null )
{
throw new ArgumentNullException("strSQL");
}
if( RecordType == null )
{
throw new ArgumentNullException("RecordType");
}
RecordORMHelper helper = this.GetHelper( RecordType );
using( System.Data.IDbCommand cmd = this.Connection.CreateCommand())
{
cmd.CommandText = strSQL ;
System.Data.IDataReader reader = cmd.ExecuteReader();
System.Collections.ArrayList list = helper.ReadRecords( reader , 0 );
reader.Close();
return list ;
}
}
private void CheckConnection()
{
if( myConnection == null )
{
throw new InvalidOperationException("Connection is null");
}
if( myConnection.State != System.Data.ConnectionState.Open )
{
throw new InvalidOperationException("Connection is not opened");
}
}
更多精彩
赞助商链接