using Models; using MySql.Data.MySqlClient; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Service { public class InitDB { public static string ConnectionString; public static void initDB(string dbConStr,bool dropTable=false) { ConnectionString = dbConStr; ConnectionConfig connectionConfig = new ConnectionConfig() { ConnectionString = dbConStr, DbType = DbType.MySql, IsAutoCloseConnection = true }; connectionConfig.ConnectionString = dbConStr; //创建数据库对象 using (SqlSugarClient db = new SqlSugarClient(connectionConfig)) { db.Aop.OnLogExecuting = (sql, pars) => { Console.WriteLine(sql);//输出sql,查看执行sql 性能无影响 }; //create db db.DbMaintenance.CreateDatabase(); //===建表 if (dropTable && db.DbMaintenance.IsAnyTable("Right", false)) db.DbMaintenance.DropTable("Right"); if (dropTable && db.DbMaintenance.IsAnyTable("Role", false)) db.DbMaintenance.DropTable("Role"); if (dropTable && db.DbMaintenance.IsAnyTable("RoleRightMap", false)) db.DbMaintenance.DropTable("RoleRightMap"); if (dropTable && db.DbMaintenance.IsAnyTable("User", false)) db.DbMaintenance.DropTable("Users"); if (dropTable && db.DbMaintenance.IsAnyTable("Classes", false)) db.DbMaintenance.DropTable("Classes"); if (dropTable && db.DbMaintenance.IsAnyTable("Product", false)) db.DbMaintenance.DropTable("Product"); if (dropTable && db.DbMaintenance.IsAnyTable("QualifiedLimit", false)) db.DbMaintenance.DropTable("QualifiedLimit"); if (dropTable && db.DbMaintenance.IsAnyTable("GradeLimit", false)) db.DbMaintenance.DropTable("GradeLimit"); if (dropTable && db.DbMaintenance.IsAnyTable("Records", false)) db.DbMaintenance.DropTable("Records"); if (dropTable && db.DbMaintenance.IsAnyTable("DefectInfo", false)) db.DbMaintenance.DropTable("DefectInfo"); //===添加与更新表 db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); //更改表数据 try { db.Ado.ExecuteCommand("drop index index_Records_ProductId_SerialNum ON table_name");//删除索引 } catch { } //===初始数据 注意*********会清空这些表数据 //清空表数据 //db.DbMaintenance.TruncateTable(); //db.DbMaintenance.TruncateTable(); if (db.Queryable().Count() < 1 && db.Queryable().Count() < 1) { db.InsertNav(new Models.User() { Code = "admin", Name = "管理员", Password = GetMD5(""), RoleInfo = new Models.Role() { Code = "admin", Name = "管理员", ModifyUserCode = "admin", CreateUserCode = "admin" },//多表添加 CreateUserCode = "admin", ModifyUserCode = "admin", }).Include(x => x.RoleInfo) .ExecuteCommand(); db.Insertable(new Models.Role() { Code = "user", Name = "操作员", CreateUserCode = "admin", ModifyUserCode = "admin", }).ExecuteCommand(); } //===权限 //db.DbMaintenance.TruncateTable(); //db.DbMaintenance.TruncateTable(); //if (db.Queryable().Where(m => m.Code == "Step").Count() < 1) db.Insertable(new Models.Right("Step", "流程管理")).ExecuteCommand(); //if (db.Queryable().Where(m => m.Code == "Product").Count() < 1) db.Insertable(new Models.Right("Product", "产品管理")).ExecuteCommand(); //if (db.Queryable().Where(m => m.Code == "Debug").Count() < 1) db.Insertable(new Models.Right("Debug", "设备调试")).ExecuteCommand(); //if (db.Queryable().Where(m => m.Code == "Order").Count() < 1) db.Insertable(new Models.Right("Order", "报表查询")).ExecuteCommand(); //if (db.Queryable().Where(m => m.Code == "Statistics").Count() < 1) db.Insertable(new Models.Right("Statistics", "统计分析")).ExecuteCommand(); //if (db.Queryable().Where(m => m.Code == "Role").Count() < 1) db.Insertable(new Models.Right("Role", "角色管理")).ExecuteCommand(); //if (db.Queryable().Where(m => m.Code == "User").Count() < 1) db.Insertable(new Models.Right("User", "用户管理")).ExecuteCommand(); //if (db.Queryable().Where(m => m.Code == "Right").Count() < 1) db.Insertable(new Models.Right("Right", "权限管理")).ExecuteCommand(); //if (db.Queryable().Where(m => m.Code == "HeightBase").Count() < 1) db.Insertable(new Models.Right("HeightBase", "高度Base校正")).ExecuteCommand(); //if (db.Queryable().Where(m => m.Code == "SysSetting").Count() < 1) db.Insertable(new Models.Right("SysSetting", "系统设置")).ExecuteCommand(); //if (db.Queryable().Where(m => m.Code == "CmdSetting").Count() < 1) db.Insertable(new Models.Right("CmdSetting", "指令设置")).ExecuteCommand(); //if (db.Queryable().Where(m => m.Code == "PTSetting").Count() < 1) db.Insertable(new Models.Right("PTSetting", "点位设置")).ExecuteCommand(); } } public static void SendServerDB(string dbConStr, Records record, bool dropTable = false) { //ConnectionString = dbConStr; int errStep = 0; try { var db = new SqlSugarClient(new ConnectionConfig() { DbType = SqlSugar.DbType.MySql, //InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, ConnectionString = dbConStr }); errStep = 1; //var pt = db.Queryable() // //.Includes(m => m.ClassesInfo) // .Includes(m => m.QualifiedLimitList) // .Includes(m => m.GradeLimitList) // .First(m => m.Code == record.ProductInfo.Code); //errStep = 2; //if (pt == null) //{ // errStep = 3; // db.InsertNav(record.ProductInfo) // //.Include(a => a.ProductParamsList)//.ThenInclude(z1 => z1.RoomList) //插入2层 Root->ShoolA->RoomList // .Include(m => m.QualifiedLimitList) // .Include(m => m.GradeLimitList) // .ExecuteCommand(); //} //else //{ // errStep = 4; // //db.DeleteNav(pt) // //.Include(m => m.QualifiedLimitList) // //.Include(m => m.GradeLimitList) // //.ExecuteCommand(); // record.ProductInfo.Id = pt.Id; // db.UpdateNav(record.ProductInfo) // .Include(m => m.QualifiedLimitList) // .Include(m => m.GradeLimitList) // .ExecuteCommand(); //} errStep = 5; //var newpd = db.Queryable() // .Includes(m => m.QualifiedLimitList) // .Includes(m => m.GradeLimitList) // .First(m => m.Code == record.ProductInfo.Code); //record.ProductId = newpd.Id; db.InsertNav(record) .Include(m => m.DefectInfoList) .ExecuteCommand(); /* ConnectionConfig connectionConfig = new ConnectionConfig() { ConnectionString = dbConStr, DbType = DbType.MySql, IsAutoCloseConnection = true }; connectionConfig.ConnectionString = dbConStr; //创建数据库对象 using (SqlSugarClient db = new SqlSugarClient(connectionConfig)) { db.Aop.OnLogExecuting = (sql, pars) => { Console.WriteLine(sql);//输出sql,查看执行sql 性能无影响 }; //create db db.DbMaintenance.CreateDatabase(); //===建表 if (dropTable && db.DbMaintenance.IsAnyTable("Product", false)) db.DbMaintenance.DropTable("Product"); if (dropTable && db.DbMaintenance.IsAnyTable("QualifiedLimit", false)) db.DbMaintenance.DropTable("QualifiedLimit"); if (dropTable && db.DbMaintenance.IsAnyTable("GradeLimit", false)) db.DbMaintenance.DropTable("GradeLimit"); if (dropTable && db.DbMaintenance.IsAnyTable("Records", false)) db.DbMaintenance.DropTable("Records"); if (dropTable && db.DbMaintenance.IsAnyTable("DefectInfo", false)) db.DbMaintenance.DropTable("DefectInfo"); //===添加与更新表 try { db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); } catch { } //更改表数据 try { db.Ado.ExecuteCommand("drop index index_Records_ProductId_SerialNum ON table_name");//删除索引 } catch { } //数据插入表 db.Insertable(record).ExecuteCommand(); db.Insertable(record.DefectInfoList).ExecuteCommand(); db.Insertable(record.ProductInfo).ExecuteCommand(); db.Insertable(record.ProductInfo.QualifiedLimitList).ExecuteCommand(); db.Insertable(record.ProductInfo.GradeLimitList).ExecuteCommand(); } */ } catch (Exception ex) { throw new Exception($"err{errStep}:{ex.Message}"); } } /// /// 备份DB (还原:mysql -uroot -p < d:\dbName.sql) /// /// public static void BackupDataBase(string outFilePath) { using (var conn = new MySqlConnection(ConnectionString)) { using (var cmd = new MySqlCommand()) { using (MySqlBackup mb = new MySqlBackup(cmd)) { // 设置数据库连接 cmd.Connection = conn; cmd.Connection.Open(); // 导出数据库到文件 mb.ExportToFile(outFilePath); conn.Close(); } } } } /// /// 还原数据库 /// /// 指定还原文件***.sql的绝对路径 /// 还原到指定数据库 /// public static bool RestoreDB(string strPath, string dbName = "LeatherDB") { bool isImport = false; if (string.IsNullOrEmpty(strPath)) { return isImport; } using (var conn = new MySqlConnection(ConnectionString)) { using (var cmd = new MySqlCommand()) { using (MySqlBackup backCmd = new MySqlBackup(cmd)) { // 设置数据库连接 cmd.Connection = conn; cmd.Connection.Open(); //导入备份 //backCmd.ImportInfo.TargetDatabase = dbName;//前提条件 当前 myconn 中的用户有建库等系列权限 //backCmd.ImportInfo.DatabaseDefaultCharSet = "utf8"; backCmd.ImportFromFile(strPath); conn.Close(); isImport = true; } } } return isImport; } private static string GetMD5(string str) { byte[] data = Encoding.UTF8.GetBytes(str); data = new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(data); string ret = ""; for (int i = 0; i < data.Length; i++) { ret += data[i].ToString("x1").PadLeft(2, '0');//ToString("x1"):转换为16进制 } return ret.ToUpper(); } } }