/// <summary> /// 生成一般的model类 /// </summary> /// <param name="db"></param> /// <param name="nameSpace"></param> /// <param name="table"></param> /// <returns></returns> public void BuildSimpleTable(EJDB db, NamespaceCode namespaceCode, EJ.DBTable table) { var columns = db.DBColumn.Where(m => m.TableID == table.id).ToList(); BuildSimpleTable(db, namespaceCode, table, columns); }
static void BuildSimpleTable(EJDB db, NamespaceCode namespaceCode, EJ.DBTable table, List <EJ.DBColumn> columns) { var pkcolumn = columns.FirstOrDefault(m => m.IsPKID == true); CodeItem classCode = new CodeItem($"public class {table.Name} :Way.Lib.DataModel"); namespaceCode.AddItem(classCode); classCode.Comment = table.caption; //构造函数 classCode.AddItem(new CodeItem($"public {table.Name}()").AddString("")); foreach (var column in columns) { FieldCodeItem fieldCodeItem = new FieldCodeItem($"_{column.Name}"); classCode.AddItem(fieldCodeItem); PropertyCodeItem proCodeItem = new PropertyCodeItem(column.Name); classCode.AddItem(proCodeItem); proCodeItem.Comment = column.caption; string dataType = GetLinqTypeString(column.dbType, column.CanNull.GetValueOrDefault() || column.IsAutoIncrement == true); string eqString = ""; if (!string.IsNullOrEmpty(column.EnumDefine) && column.dbType == "int") { if (column.EnumDefine.Trim().StartsWith("$")) { var target = column.EnumDefine.Trim().Substring(1).Split('.'); if (column.CanNull == true) { dataType = target[0] + "_" + target[1] + "Enum?"; } else { dataType = target[0] + "_" + target[1] + "Enum"; } } else { string[] enumitems = column.EnumDefine.Replace("\r", "").Split('\n'); CodeItem codeEnum = new CodeItem($"public enum {table.Name}_{column.Name}Enum:int"); namespaceCode.AddItem(codeEnum); CodeItem codeEnumField = new CodeItem(); for (int i = 0; i < enumitems.Length; i++) { var code = enumitems[i].Trim(); if (code.Length == 0) { continue; } if (code.StartsWith("//")) { if (code.Length > 2) { if (codeEnumField.Comment.Length > 0) { codeEnumField.Comment += "\r\n"; } codeEnumField.Comment += code.Substring(2); } } else { codeEnumField.Body = code; codeEnum.AddItem(codeEnumField); codeEnumField = new CodeItem(); } } if (column.CanNull == true) { dataType = table.Name + "_" + column.Name + "Enum?"; } else { dataType = table.Name + "_" + column.Name + "Enum"; } } } if (!string.IsNullOrEmpty(column.defaultValue)) { if (column.defaultValue.Trim().Length > 0) { eqString = column.defaultValue.Trim(); if (dataType == "String") { if (eqString.StartsWith("'") && eqString.EndsWith("'") && eqString.Length > 1) { eqString = eqString.Substring(1, eqString.Length - 2); } eqString = "\"" + eqString + "\""; } else if (dataType == "System.Nullable<Decimal>" || dataType == "Decimal") { eqString = eqString + "m"; } else if (dataType == "System.Nullable<float>" || dataType == "float") { eqString = eqString + "f"; } else if (dataType == "System.Nullable<Boolean>" || dataType == "Boolean") { if (eqString == "1") { eqString = "true"; } else if (eqString == "0") { eqString = "false"; } } else if (!string.IsNullOrEmpty(column.EnumDefine) && column.dbType == "int") { eqString = "(" + dataType + ")(" + eqString + ")"; } eqString = "=" + eqString; } } fieldCodeItem.FieldType = dataType; proCodeItem.PropertyType = dataType; proCodeItem.Modification = "public virtual"; proCodeItem.ItemForGet.AddString($"return _{column.Name};"); proCodeItem.ItemForSet.AddItem(new CodeItem($"if ((_{column.Name} != value))") .AddString($"var original = _{column.Name};") .AddString($"_{column.Name} = value;") .AddString($"OnPropertyChanged(\"{column.Name.Trim()}\",original,value);") ); } var classProperties = db.classproperty.Where(m => m.tableid == table.id).ToArray(); foreach (var pro in classProperties) { try { var foreign_table = db.DBTable.FirstOrDefault(m => m.id == pro.foreignkey_tableid); if (pro.iscollection == false) { var column = db.DBColumn.FirstOrDefault(m => m.id == pro.foreignkey_columnid); classCode.AddItem(new PropertyCodeItem(pro.name) { PropertyType = foreign_table.Name, Modification = "public virtual" }); } else { //与其他表多对一 classCode.AddItem(new PropertyCodeItem(pro.name) { PropertyType = $"ICollection<{foreign_table.Name}>", Modification = "public virtual" }); } } catch { } } }
static void BuildTable(EJDB db, NamespaceCode namespaceCode, EJ.DBTable table, List <EJ.DBColumn> columns, List <string> foreignKeys) { var pkcolumn = columns.FirstOrDefault(m => m.IsPKID == true); CodeItem classCode = new CodeItem($"public class {table.Name} :Way.EntityDB.DataItem"); namespaceCode.AddItem(classCode); classCode.Comment = table.caption; Dictionary <string, CodeItem> otherClassCode = new Dictionary <string, CodeItem>(); var discriminatorColumn = columns.FirstOrDefault(m => m.IsDiscriminator == true && !string.IsNullOrEmpty(m.EnumDefine?.Trim())); ClassName[] classNames = null; if (discriminatorColumn != null) { classNames = ParseNames(discriminatorColumn.EnumDefine).ToArray(); classCode.Attributes.Add(@"[TableConfig( AutoSetPropertyNameOnInsert = """ + discriminatorColumn.Name + @""" , AutoSetPropertyValueOnInsert=(" + table.Name + "_" + discriminatorColumn.Name + @"Enum)0)]"); foreach (var classnameitem in classNames) { var myClsCodeItem = new CodeItem($"public class {classnameitem.Name} :{((classnameitem.BaseName == null) ? table.Name : classnameitem.BaseName)}"); namespaceCode.AddItem(myClsCodeItem); myClsCodeItem.Comment = classnameitem.Comment; myClsCodeItem.Attributes.Add(@"[TableConfig(AutoSetPropertyNameOnInsert = """ + discriminatorColumn.Name + @""" , AutoSetPropertyValueOnInsert=" + table.Name + "_" + discriminatorColumn.Name + @"Enum." + classnameitem.Name + @")]"); otherClassCode[classnameitem.Name] = myClsCodeItem; myClsCodeItem.AddString(""); } } else { classCode.Attributes.Add("[TableConfig]"); } classCode.Attributes.Add($"[Table(\"{table.Name.ToLower()}\")]"); classCode.Attributes.Add("[Way.EntityDB.DataItemJsonConverter]"); CodeItem curClassCodeItem = null; foreach (var column in columns) { if (discriminatorColumn != null && classNames != null && !string.IsNullOrEmpty(column.ClassName?.Trim()) && columns.Any(m => m.IsDiscriminator == true) && otherClassCode.ContainsKey(column.ClassName)) { curClassCodeItem = otherClassCode[column.ClassName]; } else { curClassCodeItem = classCode; } PropertyCodeItem columnCodeItem = new PropertyCodeItem(column.Name); columnCodeItem.Modification = "public virtual"; string caption = column.caption == null ? "" : column.caption; if (caption.Contains(",")) { caption = caption.Substring(0, caption.IndexOf(",")); } else if (caption.Contains(",")) { caption = caption.Substring(0, caption.IndexOf(",")); } string dataType = GetLinqTypeString(column.dbType, column.CanNull.GetValueOrDefault() || column.IsAutoIncrement == true); string eqString = ""; if (!string.IsNullOrEmpty(column.EnumDefine) && column.dbType == "int") { if (column.EnumDefine.Trim().StartsWith("$")) { var target = column.EnumDefine.Trim().Substring(1).Split('.'); if (column.CanNull == true) { dataType = target[0] + "_" + target[1] + "Enum?"; } else { dataType = target[0] + "_" + target[1] + "Enum"; } } else { string[] enumitems = column.EnumDefine.Replace("\r", "").Split('\n'); CodeItem codeEnum = new CodeItem($"public enum {table.Name}_{column.Name}Enum:int"); namespaceCode.AddItem(codeEnum); CodeItem codeEnumField = new CodeItem(); for (int i = 0; i < enumitems.Length; i++) { var code = enumitems[i].Trim(); if (code.Length == 0) { continue; } if (code.StartsWith("//")) { if (code.Length > 2) { if (codeEnumField.Comment.Length > 0) { codeEnumField.Comment += "\r\n"; } codeEnumField.Comment += code.Substring(2); } } else { codeEnumField.Body = code; codeEnum.AddItem(codeEnumField); codeEnumField = new CodeItem(); } } if (column.CanNull == true) { dataType = table.Name + "_" + column.Name + "Enum?"; } else { dataType = table.Name + "_" + column.Name + "Enum"; } } } if (!string.IsNullOrEmpty(column.defaultValue)) { if (column.defaultValue.Trim().Length > 0) { eqString = column.defaultValue.Trim(); if (dataType == "String") { if (eqString.StartsWith("'") && eqString.EndsWith("'") && eqString.Length > 1) { eqString = eqString.Substring(1, eqString.Length - 2); } eqString = "\"" + eqString + "\""; } else if (dataType == "System.Nullable<Decimal>" || dataType == "Decimal") { eqString = eqString + "m"; } else if (dataType == "System.Nullable<float>" || dataType == "float") { eqString = eqString + "f"; } else if (dataType == "System.Nullable<Boolean>" || dataType == "Boolean") { if (eqString == "1") { eqString = "true"; } else if (eqString == "0") { eqString = "false"; } } else if (!string.IsNullOrEmpty(column.EnumDefine) && column.dbType == "int") { eqString = "(" + dataType + ")(" + eqString + ")"; } eqString = "=" + eqString; } } if (column.dbType.Contains("char")) { try { columnCodeItem.Attributes.Add($"[MaxLength({Convert.ToInt32(column.length)})]"); } catch { } } if (column.IsPKID == true) { columnCodeItem.Attributes.Add("[Key]"); } if (column.IsAutoIncrement == true) { columnCodeItem.Attributes.Add("[DatabaseGenerated(DatabaseGeneratedOption.Identity)]"); } if (column.CanNull == false) { columnCodeItem.Attributes.Add("[DisallowNull]"); //columnCodeItem.Attributes.Add("[Required]"); } if (!string.IsNullOrEmpty(column.caption)) { columnCodeItem.Attributes.Add($"[Display(Name = \"{column.caption.Replace("\r","").Replace("\n"," ").Replace("\"", "\\\"")}\")]"); } columnCodeItem.Attributes.Add($"[Column(\"{column.Name.ToLower()}\")]"); columnCodeItem.PropertyType = dataType; columnCodeItem.Comment = column.caption; curClassCodeItem.AddString($"{dataType} _{column.Name + eqString};"); curClassCodeItem.AddItem(columnCodeItem); columnCodeItem.ItemForGet.AddString($"return _{column.Name};"); columnCodeItem.ItemForSet.AddString($"if ((_{column.Name} != value))"); columnCodeItem.ItemForSet.AddString("{"); columnCodeItem.ItemForSet.AddString($" SendPropertyChanging(\"{column.Name.Trim()}\",_{column.Name.Trim()},value);"); columnCodeItem.ItemForSet.AddString($" _{column.Name} = value;"); columnCodeItem.ItemForSet.AddString($" SendPropertyChanged(\"{column.Name.Trim()}\");"); columnCodeItem.ItemForSet.AddString("}"); } var classProperties = db.classproperty.Where(m => m.tableid == table.id).ToArray(); foreach (var pro in classProperties) { try { var foreign_table = db.DBTable.FirstOrDefault(m => m.id == pro.foreignkey_tableid); var column = db.DBColumn.FirstOrDefault(m => m.id == pro.foreignkey_columnid); if (pro.iscollection == false) { if (column != null && column.TableID == table.id) { var procodeitem = new CodeItem($"public virtual {foreign_table.Name} {pro.name} {{ get; set; }}"); classCode.AddItem(procodeitem); if (foreignKeys.Contains($"{table.Name}->{column.Name}") == false) { foreignKeys.Add($"{table.Name}->{column.Name}"); procodeitem.Attributes.Add(@"[ForeignKey(""" + column.Name + @""")]"); } } else { //与其他表一对一 var procodeitem = new CodeItem($"public virtual {foreign_table.Name} {pro.name} {{ get; set; }}"); classCode.AddItem(procodeitem); } } else { if (column != null) { //与其他表多对一 var procodeitem = new CodeItem($"public virtual ICollection<{foreign_table.Name}> {pro.name} {{ get; set; }}"); classCode.AddItem(procodeitem); if (foreignKeys.Contains($"{foreign_table.Name}->{column.Name}") == false) { foreignKeys.Add($"{foreign_table.Name}->{column.Name}"); procodeitem.Attributes.Add(@"[ForeignKey(""" + column.Name + @""")]"); } } } } catch { } } }
public void BuildTable(EJDB db, NamespaceCode namespaceCode, EJ.DBTable table, List <string> foreignKeys) { var columns = db.DBColumn.Where(m => m.TableID == table.id).ToList(); BuildTable(db, namespaceCode, table, columns, foreignKeys); }
public void BuilderDB(EJDB db, EJ.Databases databaseObj, NamespaceCode namespaceCode, List <EJ.DBTable> tables) { CodeItem classCode = new CodeItem($"public class {databaseObj.Name} : Way.EntityDB.DBContext"); namespaceCode.AddItem(classCode); StringBuilder result = new StringBuilder(); //构造函数 CodeItem initFunc = new CodeItem($" public {databaseObj.Name}(string connection, Way.EntityDB.DatabaseType dbType , bool upgradeDatabase = true): base(connection, dbType , upgradeDatabase)"); classCode.AddItem(initFunc); initFunc.AddString("if (!setEvented)"); initFunc.AddString("{"); initFunc.AddString(" lock (lockObj)"); initFunc.AddString(" {"); initFunc.AddString(" if (!setEvented)"); initFunc.AddString(" {"); initFunc.AddString(" setEvented = true;"); initFunc.AddString(" Way.EntityDB.DBContext.BeforeDelete += Database_BeforeDelete;"); initFunc.AddString(" }"); initFunc.AddString(" }"); initFunc.AddString("}"); classCode.AddString("static object lockObj = new object();"); classCode.AddString("static bool setEvented = false;"); //级联删除 CodeItem beforeDeleteFunc = new CodeItem("static void Database_BeforeDelete(object sender, Way.EntityDB.DatabaseModifyEventArg e)"); classCode.AddItem(beforeDeleteFunc); beforeDeleteFunc.AddString($" var db = sender as " + namespaceCode.NameSpace + "." + databaseObj.Name + @";"); beforeDeleteFunc.AddString($"if (db == null) return;"); StringBuilder _Database_deleteCodes = new StringBuilder(); foreach (var t in tables) { var delConfigs = db.DBDeleteConfig.Where(m => m.TableID == t.id).ToList(); if (delConfigs.Count > 0) { CodeItem codeitem = new CodeItem($"if (e.DataItem is {t.Name})"); beforeDeleteFunc.AddItem(codeitem); codeitem.AddString($"var deletingItem = ({t.Name})e.DataItem;"); StringBuilder codestrs = new StringBuilder(); for (int i = 0; i < delConfigs.Count; i++) { var configitem = delConfigs[i]; var delDBTable = db.DBTable.FirstOrDefault(m => m.id == configitem.RelaTableID); var relaColumn = db.DBColumn.FirstOrDefault(m => m.id == configitem.RelaColumID); var rela_pkcolumn = db.DBColumn.FirstOrDefault(m => m.TableID == configitem.RelaTableID && m.IsPKID == true); if (rela_pkcolumn == null) { throw new Exception("关联表" + delDBTable.Name + "没有定义主键"); } codeitem.AddString($"var items{i} = (from m in db.{delDBTable.Name} where m.{relaColumn.Name} == deletingItem.id"); codeitem.AddItem(new CodeItem($"select new {delDBTable.Name}") .AddString($"{rela_pkcolumn.Name} = m.{rela_pkcolumn.Name}") ); codeitem.AddString(");"); codeitem.AddItem(new CodeItem("while(true)") .AddString($"var data2del = items{i}.Take(100).ToList();") .AddString("if(data2del.Count() ==0)") .AddString(" break;") .AddString("foreach (var t in data2del)") .AddString("{") .AddString(" t.ChangedProperties.Clear();") .AddString(" db.Delete(t);") .AddString("}") ); } beforeDeleteFunc.AddString(""); } } CodeItem modelbuildFunc = new CodeItem("protected override void OnModelCreating(ModelBuilder modelBuilder)"); classCode.AddItem(modelbuildFunc); foreach (var t in tables) { var pkcolumn = db.DBColumn.FirstOrDefault(m => m.TableID == t.id && m.IsPKID == true); if (pkcolumn == null) { throw new Exception(string.Format("表{0}缺少主键", t.Name)); } modelbuildFunc.AddString($"modelBuilder.Entity<{t.Name}>().HasKey(m => m.{pkcolumn.Name});"); var discriminatorColumn = db.DBColumn.FirstOrDefault(m => m.TableID == t.id && m.IsDiscriminator == true); if (discriminatorColumn != null) { var classNames = ParseNames(discriminatorColumn.EnumDefine).ToArray(); if (discriminatorColumn.CanNull == true) { modelbuildFunc.AddString($"modelBuilder.Entity<{t.Name}>().HasDiscriminator<{t.Name}_{discriminatorColumn.Name}Enum?>(\"{discriminatorColumn.Name}\")"); } else { modelbuildFunc.AddString($"modelBuilder.Entity<{t.Name}>().HasDiscriminator<{t.Name}_{discriminatorColumn.Name}Enum>(\"{discriminatorColumn.Name}\")"); } modelbuildFunc.AddString($".HasValue<{t.Name}>(({t.Name}_{discriminatorColumn.Name}Enum)0)"); foreach (var classnameitem in classNames) { modelbuildFunc.AddString($".HasValue<{classnameitem.Name}>({t.Name}_{discriminatorColumn.Name}Enum.{classnameitem.Name})"); } modelbuildFunc.AddString(";"); } } foreach (var t in tables) { classCode.AddString($"System.Linq.IQueryable<{t.Name}> _{t.Name};"); PropertyCodeItem proCodeItem = new PropertyCodeItem(t.Name); classCode.AddItem(proCodeItem); proCodeItem.Modification = "public virtual"; proCodeItem.PropertyType = $"System.Linq.IQueryable<{t.Name}>"; proCodeItem.ItemForSet = null; proCodeItem.ItemForGet.AddString($"if (_{t.Name} == null)"); proCodeItem.ItemForGet.AddString("{"); proCodeItem.ItemForGet.AddString($" _{t.Name} = this.Set<{t.Name}>();"); proCodeItem.ItemForGet.AddString("}"); proCodeItem.ItemForGet.AddString($"return _{t.Name};"); var discriminatorColumn = db.DBColumn.FirstOrDefault(m => m.TableID == t.id && m.IsDiscriminator == true); if (discriminatorColumn != null) { var classNames = ParseNames(discriminatorColumn.EnumDefine).ToArray(); foreach (var g in classNames) { classCode.AddString($"System.Linq.IQueryable<{g.Name}> _{g.Name};"); proCodeItem = new PropertyCodeItem(g.Name); classCode.AddItem(proCodeItem); proCodeItem.Modification = "public virtual"; proCodeItem.PropertyType = $"System.Linq.IQueryable<{g.Name}>"; proCodeItem.ItemForSet = null; proCodeItem.ItemForGet.AddString($"if (_{g.Name} == null)"); proCodeItem.ItemForGet.AddString("{"); proCodeItem.ItemForGet.AddString($" _{g.Name} = this.Set<{g.Name}>();"); proCodeItem.ItemForGet.AddString("}"); proCodeItem.ItemForGet.AddString($"return _{g.Name};"); } } } result.Append("\r\n"); string content = GetDesignData(db, databaseObj); var getDesignStringFunc = new CodeItem("protected override string GetDesignString()"); classCode.AddItem(getDesignStringFunc); getDesignStringFunc.AddString("var result = new StringBuilder();"); getDesignStringFunc.AddString($"result.Append(\"\\r\\n\");"); for (int i = 0; i < content.Length; i += 200) { int len = Math.Min(content.Length - i, 200); getDesignStringFunc.AddString("result.Append(\"" + content.Substring(i, len) + "\");"); } getDesignStringFunc.AddString("return result.ToString();"); //记录数据库设计数据 StringBuilder codeend = new StringBuilder(); codeend.AppendLine("/*<design>"); outputDesigns(codeend, db, databaseObj); codeend.AppendLine("<design>*/"); namespaceCode.CodeEnd = codeend.ToString(); }
public void Handle(string originalUrl, HttpConnectInformation connectInfo, ref bool handled) { if (originalUrl.Contains("/DownloadDatabaseCode.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 { db = connectInfo.Request.Query["filepath"], simple = "", }); } else { var json = (Newtonsoft.Json.Linq.JToken)Newtonsoft.Json.JsonConvert.DeserializeObject(database.dllPath); json["db"] = 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(1); ICodeBuilder codeBuilder = new CodeBuilder(); NamespaceCode namespaceCode = new NamespaceCode(database.NameSpace); NamespaceCode namespaceCode2 = new NamespaceCode(database.NameSpace + ".DB"); namespaceCode.AddUsing("System"); namespaceCode.AddUsing("Microsoft.EntityFrameworkCore"); namespaceCode.AddUsing("System.Collections.Generic"); namespaceCode.AddUsing("System.ComponentModel"); namespaceCode.AddUsing("System.Data"); namespaceCode.AddUsing("System.Linq"); namespaceCode.AddUsing("System.Text"); namespaceCode.AddUsing("System.ComponentModel.DataAnnotations"); namespaceCode.AddUsing("System.ComponentModel.DataAnnotations.Schema"); namespaceCode.AddUsing("Way.EntityDB.Attributes"); namespaceCode.AddUsing("System.Diagnostics.CodeAnalysis"); namespaceCode.AddBeforeCode(""); codeBuilder.BuilderDB(db, database, namespaceCode2, tables); List <string> foreignKeys = new List <string>(); foreach (var table in tables) { codeBuilder.BuildTable(db, namespaceCode, table, foreignKeys); } bw.Write("code.cs"); string code = namespaceCode.Build() + "\r\n" + namespaceCode2.Build(); byte[] bs = System.Text.Encoding.UTF8.GetBytes(code); bw.Write(bs.Length); bw.Write(bs); bw.Write(":end"); } } catch (Exception ex) { new System.IO.BinaryWriter(connectInfo.Response).Write(ex.Message); } }
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(1); ICodeBuilder codeBuilder = new CodeBuilder(); NamespaceCode codeNamespace = new NamespaceCode(database.NameSpace + ".Dtos"); codeNamespace.AddBeforeCode("//此代码由工具自动生成,请不要随意修改"); codeNamespace.AddUsing("System"); codeNamespace.AddUsing("System.Collections.Generic"); codeNamespace.AddUsing("System.Linq"); codeNamespace.AddUsing("System.Text"); codeNamespace.AddBeforeCode(""); foreach (var table in tables) { codeBuilder.BuildSimpleTable(db, codeNamespace, table); } bw.Write("code.cs"); byte[] bs = System.Text.Encoding.UTF8.GetBytes(codeNamespace.Build()); bw.Write(bs.Length); bw.Write(bs); bw.Write(":end"); } } catch (Exception ex) { new System.IO.BinaryWriter(connectInfo.Response).Write(ex.Message); } }