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

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

 2010-09-30 21:08:22 来源:WEB开发网   
核心提示: 在这里我们首先输出检查参数的代码文本,然后遍历所有绑定字段的属性对象,C#发现之旅:基于反射和动态编译的快速ORM框架(下)(2),根据属性的数据类型分为字符串样式,日期样式和其他样式,在DB_Employees中使用一下代码来定义EmployeeID属性的,///<summary>

在这里我们首先输出检查参数的代码文本,然后遍历所有绑定字段的属性对象,根据属性的数据类型分为字符串样式,日期样式和其他样式。对于字符串样式则需要输出判断是否为空的代码,对于日期样式则还要考虑BindFieldAttribute特性中指明的数据保存样式,对于其他样式则没有任何判断,直接输出。

生成删除数据的代码

基础类型RecordORMHelper预留了FillDeleteCommand函数,代码生成器自动生成代码来实现FillDeleteCommand函数,而ORM框架就会创建一个数据库命令对象,然后调用FillDeleteCommand函数来为删除数据而初始化数据库命令对象,然后执行SQL命令删除数据。

在DB_Employees中使用一下代码来定义EmployeeID属性的。

///<summary>
/// 字段值 EmployeeID
///</summary>
private System.Int32 m_EmployeeID = 0 ;
///<summary>
/// 字段值 EmployeeID
///</summary>
[BindField("EmployeeID" , Key = true )]
public System.Int32 EmployeeID
{
     get
     {
         return m_EmployeeID ;
     }
     set
     {
         m_EmployeeID = value;
     }
}

附加的BindField特性中使用了“Key=true”指明了EmployeeID字段是关键字段。于是我们很容易就想到使用SQL语句“Delete From Employees Where EmployeeID=指定的员工编号”来删除数据。于是针对DB_Employees代码生成器生成的代码如下

public override int FillDeleteCommand( System.Data.IDbCommand cmd , object objRecord )
{
    if( cmd == null ) throw new ArgumentNullException("cmd");
    if( objRecord == null ) throw new ArgumentNullException("objRecord");
    MyORM.DB_Employees myRecord = objRecord as MyORM.DB_Employees ;
    if( myRecord == null ) throw new ArgumentException("must type 'MyORM.DB_Employees' ");
    cmd.Parameters.Clear();
    cmd.CommandText = @"Delete From Employees Where EmployeeID = ? " ;
    System.Data.IDbDataParameter parameter = null ;
   
    parameter = cmd.CreateParameter();
    parameter.Value = myRecord.EmployeeID ;
    cmd.Parameters.Add( parameter );
   
    return 1 ;
}

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

Tags:发现 之旅 基于

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