using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WCS.BLL.Config; using WCS.BLL.DbModels; using WCS.BLL.HardWare; using WCS.DAL; using WCS.DAL.Db; using WCS.DAL.Db.AuthDb; using WCS.DAL.DbModels; namespace WCS.BLL.Manager { public static class DbInit { public static void InitDb() { Logs.Write("【初始化数据库】开始", LogsType.StartBoot); //初始化数据库对象 if (LocalFile.Config.IsMx) { DbHelp.db = new SqlSugarScope(new ConnectionConfig() { ConnectionString = LocalFile.Config.DataDbPath, DbType = DbType.SqlServer,//[Sqlite]安装[System.Data.SQLite]; IsAutoCloseConnection = true }, db => { db.Aop.OnError = ex => { }; }); //sqlserver保存接口日志时因为每个字段要限制长度,当接口返回内容长度过长会报错 //DbHelp.dbLog = new SqlSugarScope(new ConnectionConfig() //{ // ConnectionString = LocalFile.Config.LogDbPath, // DbType = DbType.SqlServer,//[Sqlite]安装[System.Data.SQLite]; // IsAutoCloseConnection = true //}, db => //{ // db.Aop.OnError = ex => // { // }; //}); AuthDbHelp.db = new SqlSugarScope(new ConnectionConfig() { ConnectionString = LocalFile.Config.AuthDbPath, DbType = DbType.SqlServer,//[Sqlite]安装[System.Data.SQLite]; IsAutoCloseConnection = true }, db => { db.Aop.OnError = ex => { }; }); Logs.Write("【初始化数据库】MX", LogsType.StartBoot); } //手动修改后台配置后再进行CodeFirst 数据库的生成、表的生成 //如果不配置此参数 每次启动都会持续几十秒才能成功启动后端 if (true) { #region 建库建表 只在表有变动时运行 DbHelp.db.DbMaintenance.CreateDatabase(); //新部署时 日志需要建表 不然没得接口记录 DbHelp.dbLog.DbMaintenance.CreateDatabase(); Logs.Write("【初始化数据库】创建数据库", LogsType.StartBoot); DbHelp.db.CodeFirst.InitTables(typeof(ModuleInfo), typeof(ShelfInfo), typeof(StoreInfo) , typeof(InventoryDetail), typeof(OutOrder), typeof(OutOrderDetail), typeof(OutOrderMatDetail) , typeof(ShelfTypeInfo), typeof(MatBaseInfo), typeof(MatInfo) , typeof(StockTakingOrder), typeof(StockTakingOrderMatDetail), typeof(InOutRecord) , typeof(DocumentSerialNumber), typeof(OrderLight), typeof(MatInfoLog) , typeof(AppVersion) ,typeof(CurrentTask),typeof(FinishedTask), typeof(UploadededTask) ); //DbHelp.db.CodeFirst.InitTables(typeof(ShelfInfo)); Logs.Write("【初始化数据库】db(业务数据库)建表", LogsType.StartBoot); DbHelp.dbLog.CodeFirst.InitTables(typeof(SystemApiLogRecord)); Logs.Write("【初始化数据库】dblog(日志数据库)建表", LogsType.StartBoot); //初始化单据序列号数据 if (!DbHelp.db.Queryable().Any()) { var outDocumentSerialNumber = new DocumentSerialNumber() { DocumentType = DocumentTypeEnum.出库单据, UpdateDate = DateTime.Now, CurrentSerialNumber = 0 }; var stockTakingDocumentSerialNumber = new DocumentSerialNumber() { DocumentType = DocumentTypeEnum.盘点单据, UpdateDate = DateTime.Now, CurrentSerialNumber = 0 }; DbHelp.db.Insertable(outDocumentSerialNumber).ExecuteCommand(); DbHelp.db.Insertable(stockTakingDocumentSerialNumber).ExecuteCommand(); } Logs.Write("【初始化数据库】DocumentSerialNumber", LogsType.StartBoot); //初始化货架类型 if (!DbHelp.db.Queryable().Any()) { var smartShelf = new ShelfTypeInfo() { ShelfTypeName = "智能货架" }; var singleLight = new ShelfTypeInfo() { ShelfTypeName = "信息化货架" }; DbHelp.db.Insertable(smartShelf).ExecuteCommand(); DbHelp.db.Insertable(singleLight).ExecuteCommand(); } Logs.Write("【初始化数据库】初始化货架类型", LogsType.StartBoot); //初始化权限数据库 AuthDbHelp.InitDb(); #endregion LocalFile.Config.IsResetDBOrTable = false; LocalFile.SaveConfig(); } Logs.Write("【初始化数据库】结束", LogsType.StartBoot); } } }