Esempio n. 1
0
 internal void OnDeleted(object sender, DalcDataSourceChangeEventArgs e)
 {
     if (Deleted != null)
     {
         Deleted(sender, e);
     }
 }
Esempio n. 2
0
 internal void OnInserted(object sender, DalcDataSourceChangeEventArgs e)
 {
     if (Inserted != null)
     {
         Inserted(sender, e);
     }
 }
Esempio n. 3
0
 internal void OnUpdated(object sender, DalcDataSourceChangeEventArgs e)
 {
     if (Updated != null)
     {
         Updated(sender, e);
     }
 }
Esempio n. 4
0
        protected override int ExecuteDelete(IDictionary keys, IDictionary oldValues)
        {
            DalcDataSourceChangeEventArgs eArgs = new DalcDataSourceChangeEventArgs(Name, keys, oldValues, oldValues);

            DataSource.OnDeleting(DataSource, eArgs);
            if (eArgs.Cancel)
            {
                return(0);
            }
            QueryNode uidCondition = ComposeUidCondition(keys);

            if (DataSource.DataSetMode)
            {
                DataSet ds  = GetDataSet();
                var     tbl = DataSource.Dalc.Load(new Query(eArgs.TableName, uidCondition), ds);
                EnsureDataSchema(tbl);
                eArgs.AffectedCount = tbl.Rows.Count;
                for (int i = 0; i < tbl.Rows.Count; i++)
                {
                    tbl.Rows[i].Delete();
                }
                DataSource.Dalc.Update(tbl);
            }
            else
            {
                eArgs.AffectedCount = DataSource.Dalc.Delete(new Query(eArgs.TableName, uidCondition));
            }

            // raise event
            DataSource.OnDeleted(DataSource, eArgs);
            return(eArgs.AffectedCount);
        }
Esempio n. 5
0
        protected override int ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues)
        {
            DalcDataSourceChangeEventArgs eArgs = new DalcDataSourceChangeEventArgs(Name, keys, oldValues, values);

            DataSource.OnUpdating(DataSource, eArgs);

            if (eArgs.Cancel)
            {
                return(0);
            }
            QueryNode uidCondition = ComposeUidCondition(keys);

            if (DataSource.DataSetMode)
            {
                DataSet ds  = GetDataSet();
                var     tbl = DataSource.Dalc.Load(new Query(eArgs.TableName, uidCondition), ds);
                EnsureDataSchema(tbl);

                eArgs.AffectedCount = tbl.Rows.Count;
                foreach (DataRow r in tbl.Rows)
                {
                    foreach (DataColumn col in tbl.Columns)
                    {
                        if (values.Contains(col.ColumnName))
                        {
                            r[col] = PrepareDataRowValue(values[col.ColumnName]);
                        }
                    }
                }
                DataSource.Dalc.Update(tbl);
                // push back into context all fields (if only 1 record is updated)
                if (tbl.Rows.Count == 1)
                {
                    foreach (DataColumn c in tbl.Columns)
                    {
                        values[c.ColumnName] = tbl.Rows[0][c];
                    }
                }
            }
            else
            {
                eArgs.AffectedCount = DataSource.Dalc.Update(new Query(eArgs.TableName, uidCondition), values);
            }
            // raise event
            DataSource.OnUpdated(DataSource, eArgs);
            return(eArgs.AffectedCount);
        }
Esempio n. 6
0
        protected override int ExecuteInsert(IDictionary values)
        {
            DalcDataSourceChangeEventArgs eArgs = new DalcDataSourceChangeEventArgs(Name, null, null, values);

            DataSource.OnInserting(DataSource, eArgs);
            if (eArgs.Cancel)
            {
                return(0);
            }

            if (DataSource.DataSetMode)
            {
                DataSet ds = GetDataSet();
                // if schema is unknown, lets try to load from datasource
                if (!ds.Tables.Contains(eArgs.TableName))
                {
                    DataSource.Dalc.Load(new Query(eArgs.TableName, new QueryConditionNode((QConst)1, Conditions.Equal, (QConst)2)), ds);
                }
                DataTable tbl = ds.Tables[eArgs.TableName];
                EnsureDataSchema(tbl);

                DataRow r = tbl.NewRow();
                foreach (DataColumn col in tbl.Columns)
                {
                    if (values.Contains(col.ColumnName))
                    {
                        r[col] = PrepareDataRowValue(values[col.ColumnName]);
                    }
                }
                tbl.Rows.Add(r);
                DataSource.Dalc.Update(tbl);
                // push back into context all fields
                foreach (DataColumn c in tbl.Columns)
                {
                    values[c.ColumnName] = r[c];
                }
            }
            else
            {
                DataSource.Dalc.Insert(eArgs.TableName, values);
            }
            DataSource.OnInserted(DataSource, eArgs);
            return(1);
        }