Ejemplo n.º 1
0
        public virtual void Add(bool addAll = false, ProgressReporter pg = null)
        {
            //lock (DataSeverConnection.Instance.Connection)
            //{
            try
            {
                string          sql  = "SELECT * FROM [" + typeof(T).Name.SanitizeTypeName() + "]";
                ADODB.Recordset rs   = DataSeverConnection.Instance.Recordset(sql, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic);
                string[]        keys = GetPrimaryKeyColumns();

                try
                {
                    rs.AddNew();
                    FillRecordset(addAll, rs, keys);
                    rs.Update();
                }
                catch (Exception) { return; }
                if (addAll == false)
                {
                    keys.Each(k =>
                    {
                        int pos           = rs.GetFieldPosition(k);
                        PropertyInfo temp = typeof(T).GetProperty(k);
                        object val        = rs.Fields[pos].Value;
                        temp.SetValue(this, Convert.ChangeType(val, temp.PropertyType));
                    });
                }
                rs.Close();
                NeedsToSave = false;
                if (pg != null)
                {
                    pg.ReportProgress(pg.ReportAction);
                }
            }
            catch (Exception err) { MessageBox.Show("Error adding to Database: " + err.Message); }
            //}
        }