protected virtual void WriteLog(DataRowTriggerEventArgs dataRowArg) { if (LogTables.ContainsKey(dataRowArg.Row.Table.TableName) && (dataRowArg.Action == DataRowActionType.Inserted || dataRowArg.Action == DataRowActionType.Updated || dataRowArg.Action == DataRowActionType.Deleted)) { object userName = DBNull.Value; if (Thread.CurrentPrincipal != null && Thread.CurrentPrincipal.Identity != null && Thread.CurrentPrincipal.Identity.Name != null) { userName = Thread.CurrentPrincipal.Identity.Name; } var data = new Dictionary <string, IQueryValue>() { { "action", (QConst)dataRowArg.Action.ToString().ToLower() }, { "timestamp", (QConst)DateTime.Now }, { "username", new QConst(userName) } }; foreach (var pkCol in dataRowArg.Row.Table.PrimaryKey) { var val = dataRowArg.Action == DataRowActionType.Deleted ? dataRowArg.Row[pkCol, DataRowVersion.Original] : dataRowArg.Row[pkCol]; data["record_" + pkCol.ColumnName] = new QConst(val); } LogDalc.Insert(LogTables[dataRowArg.Row.Table.TableName], data); } }
protected virtual void ApplySetColumns(DataRowTriggerEventArgs dataRowArg) { EnsureTableToSetColumns(); if (TableToSetColumns != null && TableToSetColumns.ContainsKey(dataRowArg.Row.Table.TableName)) { foreach (var set in TableToSetColumns[dataRowArg.Row.Table.TableName]) { if ((set.Action & dataRowArg.Action) == dataRowArg.Action) { set.Apply(dataRowArg.Row); } } } }
public void OnDataRowHandler(DataRowTriggerEventArgs dataRowArg) { WriteLog(dataRowArg); ApplySetColumns(dataRowArg); }