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); } } }