程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#發現之旅第十二講 基於反射和動態編譯的快速ORM框架(下)(6)

C#發現之旅第十二講 基於反射和動態編譯的快速ORM框架(下)(6)

編輯:關於C語言

在代碼生成器 中生成FillUpdateCommand代碼文本的代碼為

myWriter.WriteLine("public  override int FillUpdateCommand( System.Data.IDbCommand cmd , object  objRecord )");
myWriter.BeginGroup("{");
if (KeyPropertIEs.Count ==  0)
{
    myWriter.WriteLine("throw new NotSupportedException (\"FillUpdateCommand\");");
}
else
{
     myWriter.WriteLine("if( cmd == null ) throw new ArgumentNullException (\"cmd\");");
    myWriter.WriteLine("if( objRecord == null ) throw  new ArgumentNullException(\"objRecord\");");
    myWriter.WriteLine (RecordType.FullName + " myRecord = objRecord as " + RecordType.FullName  + " ;");
    myWriter.WriteLine("if( myRecord == null ) throw  new ArgumentException(\"must type '" + RecordType.FullName + "'  \");");
    // 更新用SQL語句文本
    System.Text.StringBuilder  myUpdateSQL = new System.Text.StringBuilder();
    // 所有的SQL參 數名稱
    System.Collections.ArrayList ParameterNames = new  System.Collections.ArrayList();
    foreach  (System.Reflection.PropertyInfo p in ps)
    {
         if (p.CanRead == false)
        {
             continue;
        }
        string FieldName =  this.GetBindFIEldName(p);
        if (myUpdateSQL.Length > 0)
        {
            myUpdateSQL.Append(" ,  ");
        }
        if (bolNamedParameter)
         {
            string pName = "Value" +  p.Name;
            ParameterNames.Add( pName );
             myUpdateSQL.Append(FixFieldName(FIEldName) + " = @" +  pName);
        }
        else
         {
            myUpdateSQL.Append(FixFieldName(FIEldName) + "  = ? ");
        }
    }//foreach
     ParameterNames.AddRange(KeyParameterNames);
    myUpdateSQL.Insert(0,  "Update " + FixTableName(TableName) + " Set ");
     myUpdateSQL.Append(" Where " + myWhereSQL.ToString());

     myWriter.WriteLine("");
    myWriter.WriteLine("cmd.CommandText = @\""  + myUpdateSQL.ToString() + "\" ;");
    myWriter.WriteLine ("cmd.Parameters.Clear();");
    myWriter.WriteLine ("System.Data.IDbDataParameter parameter = null ;");
     myWriter.WriteLine("");
    System.Collections.ArrayList ps2 = new  System.Collections.ArrayList();
    ps2.AddRange(ps);
     ps2.AddRange(KeyPropertIEs);

    foreach  (System.Reflection.PropertyInfo p in ps2)
    {
         if (p.CanRead == false)
        {
             continue;
        }
        myWriter.WriteLine("");
        myWriter.WriteLine("parameter = cmd.CreateParameter();");
        WriteSetParameterValue(p, myWriter);
        if  (bolNamedParameter)
        {
            // 設置 SQL命令對象的名稱
            myWriter.WriteLine ("parameter.ParameterName = \"" + ParameterNames[0] + "\";");
             ParameterNames.RemoveAt(0);
        }
         myWriter.WriteLine("cmd.Parameters.Add( parameter );");
     }//foreach
    myWriter.WriteLine("");
     myWriter.WriteLine("return " + ps2.Count + " ;");
}//else
myWriter.EndGroup(")//public override int FillUpdateCommand(  System.Data.IDbCommand cmd , object objRecord )");

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved