public SubmissionResult SubmitChanges()
        {
            //Console.WriteLine("BEGIN send sql commands");
            SubmissionResult result = new SubmissionResult();

            result.HasUpdateCommands      = this.m_SqlUpdateCommands.Count > 0;
            result.HasDeleteFirstCommands = this.m_SqlDeleteFirstCommands.Count > 0;
            result.HasDeleteCommands      = this.m_SqlDeleteCommands.Count > 0;
            result.HasInsertCommands      = this.m_SqlInsertCommands.Count > 0;
            result.HasInsertLastCommands  = this.m_SqlInsertLastCommands.Count > 0;

            //if (result.HasDeleteCommands || result.HasDeleteFirstCommands) System.Windows.MessageBox.Show("Delete Commands - pause and step");

            this.RunSqlCommands(this.m_SqlUpdateCommands);
            this.RunSqlCommands(this.m_SqlDeleteFirstCommands);
            this.RunSqlCommands(this.m_SqlDeleteCommands);
            this.RunSqlCommands(this.m_SqlInsertCommands);
            this.RunSqlCommands(this.m_SqlInsertLastCommands);
            //Console.WriteLine("END send sql commands");
            return(result);
        }
        public SubmissionResult SubmitChanges()
        {
            SubmissionResult result = new SubmissionResult();

            result.HasUpdateCommands      = this.m_SqlUpdateCommands.Count > 0;
            result.HasDeleteFirstCommands = this.m_SqlDeleteFirstCommands.Count > 0;
            result.HasDeleteCommands      = this.m_SqlDeleteCommands.Count > 0;
            result.HasInsertCommands      = this.m_SqlInsertCommands.Count > 0;
            result.HasInsertLastCommands  = this.m_SqlInsertLastCommands.Count > 0;

            if (result.HasUpdateCommands || result.HasDeleteFirstCommands || result.HasDeleteCommands || result.HasInsertCommands || result.HasInsertLastCommands)
            {
                using (MySqlConnection cn = new MySqlConnection(this.m_ConnectionString))
                {
                    cn.Open();

                    MySqlTransaction trans = cn.BeginTransaction();
                    try
                    {
                        this.RunSqlCommands(this.m_SqlUpdateCommands, cn, trans);
                        this.RunSqlCommands(this.m_SqlDeleteFirstCommands, cn, trans);
                        this.RunSqlCommands(this.m_SqlDeleteCommands, cn, trans);
                        this.RunSqlCommands(this.m_SqlInsertCommands, cn, trans);
                        this.RunSqlCommands(this.m_SqlInsertLastCommands, cn, trans);
                        trans.Commit();
                    }
                    catch (Exception ex) //error occurred
                    {
                        if (cn.State == System.Data.ConnectionState.Open)
                        {
                            trans.Rollback();
                            cn.Close();
                        }
                        throw(ex);
                    }
                }
            }
            return(result);
        }