public void Handle(string originalUrl, HttpConnectInformation connectInfo, ref bool handled)
        {
            if (originalUrl.Contains("/DownLoadSimpleCodeHandler.aspx") == false)
            {
                return;
            }
            handled = true;
            try
            {
                if (connectInfo.Session["user"] == null)
                {
                    throw new Exception("not arrow");
                }

                int databaseid = Convert.ToInt32(connectInfo.Request.Query["databaseid"]);
                using (EJDB db = new EJDB())
                {
                    var database = db.Databases.FirstOrDefault(m => m.id == databaseid);
                    if (database.dllPath == null || database.dllPath.StartsWith("{") == false)
                    {
                        database.dllPath = Newtonsoft.Json.JsonConvert.SerializeObject(new {
                            simple = connectInfo.Request.Query["filepath"],
                            db     = "",
                        });
                    }
                    else
                    {
                        var json = (Newtonsoft.Json.Linq.JToken)Newtonsoft.Json.JsonConvert.DeserializeObject(database.dllPath);
                        json["simple"]   = connectInfo.Request.Query["filepath"];
                        database.dllPath = json.ToString();
                    }
                    db.Update(database);

                    var tables = db.DBTable.Where(m => m.DatabaseID == databaseid).ToList();
                    System.IO.BinaryWriter bw = new System.IO.BinaryWriter(connectInfo.Response);
                    bw.Write("start");

                    var invokingDB = Way.EntityDB.Design.DBHelper.CreateInvokeDatabase(database);
                    IDatabaseDesignService dbservice = Way.EntityDB.Design.DBHelper.CreateDatabaseDesignService((Way.EntityDB.DatabaseType)(int) database.dbType);


                    bw.Write(tables.Count * 1);
                    ICodeBuilder codeBuilder = new CodeBuilder();


                    foreach (var table in tables)
                    {
                        string[] codes = codeBuilder.BuildSimpleTable(db, database.NameSpace, table);
                        for (int i = 0; i < codes.Length; i++)
                        {
                            bw.Write(table.Name + "_" + i + ".cs");
                            byte[] bs = System.Text.Encoding.UTF8.GetBytes(codes[i]);
                            bw.Write(bs.Length);
                            bw.Write(bs);
                        }
                    }


                    bw.Write(":end");
                }
            }
            catch (Exception ex)
            {
                new System.IO.BinaryWriter(connectInfo.Response).Write(ex.Message);
            }
        }
        public bool ImportDesign(int projectid, byte[] csFileContent)
        {
            using (MemoryStream ms = new MemoryStream(csFileContent))
                using (StreamReader sr = new StreamReader(ms, Encoding.UTF8))
                {
                    StringBuilder content       = new StringBuilder();
                    bool          bufferStarted = false;
                    while (true)
                    {
                        var line = sr.ReadLine();
                        if (line == null)
                        {
                            break;
                        }
                        if (line.StartsWith("<design>*/"))
                        {
                            break;
                        }
                        if (bufferStarted)
                        {
                            content.Append(line);
                        }
                        if (line.StartsWith("/*<design>"))
                        {
                            bufferStarted = true;
                        }
                    }
                    //result.Append(\"\\r\\n\");

                    StringBuilder actioncontent = new StringBuilder();
                    bufferStarted = false;
                    ms.Position   = 0;
                    while (true)
                    {
                        var line = sr.ReadLine();
                        if (line == null)
                        {
                            break;
                        }
                        if (line.StartsWith("return result.ToString()"))
                        {
                            break;
                        }
                        if (bufferStarted)
                        {
                            var index = line.IndexOf("result.Append(");
                            line = line.Substring(index + "result.Append(".Length + 1);
                            line = line.Substring(0, line.LastIndexOf("\""));
                            actioncontent.Append(line);
                        }
                        if (line.StartsWith("result.Append(\"\\r\\n\");"))
                        {
                            bufferStarted = true;
                        }
                    }

                    var bs = Convert.FromBase64String(content.ToString());
                    bs = CodeBuilder.UnGzip(bs);
                    var designData = Encoding.UTF8.GetString(bs).FromJson <DesignData>();

                    bs = Convert.FromBase64String(actioncontent.ToString());
                    bs = CodeBuilder.UnGzip(bs);
                    var dset = Encoding.UTF8.GetString(bs).FromJson <WayDataSet>();

                    int oldDatabaseid;
                    using (EJDB_Check db = new EJDB_Check())
                    {
                        if (db.Databases.Any(m => m.Name == designData.Database.Name))
                        {
                            throw new Exception("数据库名称有重复");
                        }

                        try
                        {
                            db.BeginTransaction();

                            oldDatabaseid = designData.Database.id.Value;
                            designData.Database.ProjectID = projectid;
                            db.Insert(designData.Database);

                            #region Modules
                            foreach (var module in designData.Modules)
                            {
                                module.BackupChangedProperties.Add("id", new DataValueChangedItem()
                                {
                                    OriginalValue = module.id.Value
                                });
                                module.DatabaseID = designData.Database.id;
                                db.Insert(module);
                            }

                            foreach (var module in designData.Modules)
                            {
                                if (module.parentID != null && module.parentID != 0)
                                {
                                    var parentModule = designData.Modules.FirstOrDefault(m => (int)m.BackupChangedProperties["id"].OriginalValue == module.parentID.Value);
                                    if (parentModule != null)
                                    {
                                        module.parentID = parentModule.id;
                                        db.Update(module);
                                    }
                                }
                            }
                            #endregion

                            #region Tables
                            foreach (var table in designData.Tables)
                            {
                                table.BackupChangedProperties.Add("id", new DataValueChangedItem()
                                {
                                    OriginalValue = table.id.Value
                                });
                                table.DatabaseID = designData.Database.id;
                                db.Insert(table);
                            }
                            #endregion

                            #region Columns
                            foreach (var column in designData.DBColumns)
                            {
                                column.BackupChangedProperties.Add("id", new DataValueChangedItem()
                                {
                                    OriginalValue = column.id.Value
                                });
                                column.TableID = designData.Tables.FirstOrDefault(m => (int)m.BackupChangedProperties["id"].OriginalValue == column.TableID.Value).id;
                                db.Insert(column);
                            }
                            #endregion

                            #region IDXIndexes
                            foreach (var idxindex in designData.IDXIndexes)
                            {
                                idxindex.BackupChangedProperties.Add("id", new DataValueChangedItem()
                                {
                                    OriginalValue = idxindex.id.Value
                                });
                                idxindex.TableID = designData.Tables.FirstOrDefault(m => (int)m.BackupChangedProperties["id"].OriginalValue == idxindex.TableID.Value).id;
                                db.Insert(idxindex);
                            }
                            #endregion

                            #region classproperties
                            foreach (var classpro in designData.classproperties)
                            {
                                classpro.BackupChangedProperties.Add("id", new DataValueChangedItem()
                                {
                                    OriginalValue = classpro.id.Value
                                });
                                classpro.tableid = designData.Tables.FirstOrDefault(m => (int)m.BackupChangedProperties["id"].OriginalValue == classpro.tableid.Value).id;
                                db.Insert(classpro);
                            }
                            #endregion

                            #region DBDeleteConfigs
                            foreach (var delconfig in designData.DBDeleteConfigs)
                            {
                                delconfig.BackupChangedProperties.Add("id", new DataValueChangedItem()
                                {
                                    OriginalValue = delconfig.id.Value
                                });
                                delconfig.TableID     = designData.Tables.FirstOrDefault(m => (int)m.BackupChangedProperties["id"].OriginalValue == delconfig.TableID.Value).id;
                                delconfig.RelaColumID = designData.DBColumns.FirstOrDefault(m => (int)m.BackupChangedProperties["id"].OriginalValue == delconfig.RelaColumID.Value).id;
                                delconfig.RelaTableID = designData.Tables.FirstOrDefault(m => (int)m.BackupChangedProperties["id"].OriginalValue == delconfig.RelaTableID.Value).id;
                                db.Insert(delconfig);
                            }
                            #endregion

                            #region TableInModules
                            foreach (var tableInModule in designData.TableInModules)
                            {
                                tableInModule.BackupChangedProperties.Add("id", new DataValueChangedItem()
                                {
                                    OriginalValue = tableInModule.id.Value
                                });
                                tableInModule.TableID  = designData.Tables.FirstOrDefault(m => (int)m.BackupChangedProperties["id"].OriginalValue == tableInModule.TableID.Value).id;
                                tableInModule.ModuleID = designData.Modules.FirstOrDefault(m => (int)m.BackupChangedProperties["id"].OriginalValue == tableInModule.ModuleID.Value).id;
                                db.Insert(tableInModule);
                            }
                            #endregion


                            var assembly = typeof(Way.EntityDB.Design.Actions.CreateTableAction).GetTypeInfo().Assembly;
                            var dtable   = dset.Tables[0];
                            var rows     = dtable.Rows.OrderBy(m => (long)m["id"]).ToList();
                            foreach (var datarow in rows)
                            {
                                EJ.DesignHistory action = new EJ.DesignHistory()
                                {
                                    ActionId   = Convert.ToInt32(datarow["id"]),
                                    Content    = datarow["content"].ToString(),
                                    DatabaseId = designData.Database.id,
                                    Type       = datarow["type"].ToString()
                                };
                                db.Insert(action);
                            }


                            db.CommitTransaction();
                        }
                        catch (Exception)
                        {
                            db.RollbackTransaction();
                            throw;
                        }

                        return(true);
                    }
                }
        }