예제 #1
0
        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);
            }
        }
예제 #2
0
 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);
             }
         }
     }
 }
예제 #3
0
 public void OnDataRowHandler(DataRowTriggerEventArgs dataRowArg)
 {
     WriteLog(dataRowArg);
     ApplySetColumns(dataRowArg);
 }