private static void DDL(IDDL ddl, Type objtype, ConnectionStringSettings css, string key)
        {
            try
            {
                Database db = new Database(ddl, css.ConnectionString);

                StringBuilder sql = new StringBuilder();

                // get db's table and column
                db.Fill();

                sql.Append(db.GenerateSql(objtype));

                // execute sql
                db.Execute(sql.ToString());

                LogManager.GetLogger<DDLFactory>().Info("sync table schema of {0} ok.", objtype.Name);
            }
            catch (Exception ex)
            {
                LogManager.GetLogger<DDLFactory>().Fatal("Try to sync Model: "+objtype.Name+" schema ERROR:"+ex.Message);
            }
            finally
            {
                if (!string.IsNullOrEmpty(css.Name))
                    if (!ddl_status.Contains(key))
                        ddl_status.Add(key);
            }
        }
 public Database(IDDL ddl, string connstring)
 {
     Tables = new List<Table>();
     this.ddl = ddl;
     Connectionstring = connstring;
     ddl.Init(Connectionstring);
 }
        public static void Sync(IDDL ddl, Type objtype, ConnectionStringSettings css)
        {
            if (ddl == null)
                return;

            if (string.IsNullOrEmpty(css.Name))
                DDL(ddl, objtype, css, null);
            else
            {
                string key = objtype.Name + css.Name;

                if (!ddl_status.Contains(key))
                {
                    lock (_lock)
                    {
                        if (!ddl_status.Contains(key))
                        {
                            DDL(ddl, objtype, css, key);
                        }
                    }
                }
            }
        }