private void LoadTableSchema(TableInfo table, DbCon db)
        {
            using (IDataReader dr = db.ExecuteDataReader("select * from " + dbType.FormatDbObj(table.TableName) + " WHERE 1 = 0"))
            {
                //Monta o Header
                DataTable dt = dr.GetSchemaTable(); // db

                TableColumn rf;

                foreach (DataRow drr in dt.Rows)
                {
                    rf = table.Columns.FirstOrDefault(o => o.Name == drr["ColumnName"].ToString());

                    if (rf == null)
                    {
                        rf = new TableColumn();
                        table.Columns.Add(rf);
                    }
                    rf.Checked = true;
                    //rf.Value = dr.GetValue(Convert.ToInt32(drr["ColumnOrdinal"]));
                    rf.Name  = drr["ColumnName"].ToString();
                    rf.IsKey = Convert.ToBoolean((drr["IsKey"] is DBNull ? false : drr["IsKey"]));

                    rf.DefinedSize = Convert.ToInt32(drr["ColumnSize"]);
                    rf.AllowNull   = Convert.ToBoolean(drr["AllowDBNull"]);
                    rf.TypeName    = ((Type)drr["DataType"]).Name;
                    if (!(drr["NumericPrecision"] is DBNull))
                    {
                        rf.Precision = Convert.ToInt32(drr["NumericPrecision"]);
                    }
                    if (!(drr["NumericScale"] is DBNull))
                    {
                        rf.Decimals = Convert.ToInt32(drr["NumericScale"]);
                    }

                    rf.IsAutoIncrement = Convert.ToBoolean(drr["IsAutoIncrement"]);

                    if (rf.IsKey)
                    {
                        if (!table.Keys.Exists(o => o.Equals(rf.Name, StringComparison.CurrentCultureIgnoreCase)))
                        {
                            table.Keys.Add(rf.Name);
                        }
                    }
                }

                if (table.Keys.Count == 1)
                {
                    table.ColumnKeyName = table.Keys[0];
                }
            }
        }
 public DbTaskRunner(DbCon dbConnection, MessageHandler messageHandler)
 {
     this.dbConnection   = dbConnection;
     this.dbType         = dbConnection.DbConnectionInfo.DbType;
     this.messageHandler = messageHandler;
 }
 public DbSyncRunner(DbCon dbConnection, MessageHandler messageHandler) : base(dbConnection, messageHandler)
 {
 }
 public DbTableLoader(DbCon dbConnection, MessageHandler messageHandler) : base(dbConnection, messageHandler)
 {
 }