快速 ORM 框架在更新資料庫時,會先建立 IDbCommand 物件,再呼叫實體類別的 FillUpdateCommand 方法設定 SQL 與參數,最後執行命令完成更新。本文以 DB_Employees 為例,展示生成的更新代碼結構。
public override int FillUpdateCommand(IDbCommand cmd, object objRecord) {
if (cmd == null) throw new ArgumentNullException("cmd");
if (objRecord == null) throw new ArgumentNullException("objRecord");
DB_Employees myRecord = objRecord as DB_Employees;
if (myRecord == null) throw new ArgumentException("must type 'DB_Employees'");
cmd.CommandText = @"UPDATE Employees SET
EmployeeID = ?, LastName = ?, FirstName = ?, ... , Sex = ?
WHERE EmployeeID = ?";
cmd.Parameters.Clear();
IDbDataParameter parameter = null;
parameter = cmd.CreateParameter();
parameter.Value = myRecord.EmployeeID;
cmd.Parameters.Add(parameter);
parameter = cmd.CreateParameter();
parameter.Value = myRecord.BirthDate.ToString("yyyy-MM-dd");
cmd.Parameters.Add(parameter);
// ... 其他屬性依序加入參數 ...
parameter = cmd.CreateParameter();
parameter.Value = myRecord.Sex;
cmd.Parameters.Add(parameter);
// WHERE 條件參數(主鍵)
parameter = cmd.CreateParameter();
parameter.Value = myRecord.EmployeeID;
cmd.Parameters.Add(parameter);
return 22; // 參數總數
}
BirthDate 以 yyyy-MM-dd 格式輸出,符合資料庫預期。此模式適用於任何實體類別,代碼生成器會依據屬性與 BindFieldAttribute 自動產生對應邏輯,開發者無需手寫重複的 CRUD 代碼。