在代碼生成器 中生成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 )");