注意:连接数据库账户需要一定权限才能操作,最好管理员级别的账户
1.建表、获取表信息
2.修改表操作
3.创建视图、索引等
4.删除视图、函数、存储过程等。
//例1 获取所有表 var tables = db.DbMaintenance.GetTableInfoList(false);//true 走缓存 false不走缓存 foreach (var table in tables) { Console.WriteLine(table.Description);//输出表信息 //获取列信息 //var columns=db.DbMaintenance.GetColumnInfosByTableName("表名",false); } //例2 db.DbMaintenance.IsAnyTable("tablename",false)//验证表名是否缓存不走缓存
注意:用查询方法时看有没有 isCache重载, true是走缓存,false是不走缓存
注意:用查询方法时看有没有 isCache重载, true是走缓存,false是不走缓存
名称 | 备注 | 返回类型 |
---|---|---|
GetDataBaseList | 获取所有数据库名称 | List |
GetViewInfoList | 查询所有视图 | List |
GetTableInfoList | 获取所有表名 GetTableInfoList(是否缓存) GetTableInfoList(重写局部SQL) 看文档:3.6 | List |
GetColumnInfosByTableName | 获取列根据表名,获取字段,字段信息 GetColumnInfosByTableName(表名,是否缓存) GetColumnInfosByTableName(表名,重写局部SQL) 看文档:3.7 | List |
GetIsIdentities | 获取自增列 | List |
GetPrimaries | 获取主键 | List |
IsAnyTable | 表是否存在,判断表存不存在 ( IsAny(表名,是否缓存)) | bool |
IsAnyColumn | 列是否存在 | bool |
IsPrimaryKey | 主键是否存在 | bool |
IsIdentity | 自增是否存在 | bool |
IsAnyConstraint | 约束是否存在 | bool |
DropTable | 删除表 | bool |
TruncateTable | 清空表 | bool |
CreateTable(看标题3) | 看标题3来实现建表 | bool |
AddColumn | 添加列 | bool |
UpdateColumn | 更新列 | bool |
AddPrimaryKey | 添加主键 | bool |
DropConstraint | 删除约束 | bool |
BackupDataBase | 备份库 (看标题4用法) | bool |
BackupTable | 备份表 | bool |
DropColumn | 删除列 | bool |
RenameColumn | 重命名列 | bool |
AddDefaultValue | 添加默认值 | bool |
AddTableRemark | 添加表描述,表注释 | bool |
IsAnyTableRemark | 是否存在表描述 | |
DeleteTableRemark | 删除表描述 | bool |
AddColumnRemark | 添加列描述,表注释 | |
DeleteColumnRemark | 删除列描述,表注释 | bool |
RenameTable | 重命名表 | bool |
CreateIndex | 创建索引 或者 唯一约束(唯一索引) | bool |
IsAnyIndex | 索引是否存在 | bool |
GetProcList | 获取存储过程名字集合 | List |
GetIndexList | 获取所有索引名字集合 | List |
CreateView(看标题3.3) | 创建视图 5.1.4.106 | bool |
GetFuncList | 获取函数(建函数最好命名有规则有些非自定义的也出来) | List |
DropView | 删除视图 5.1.4.106 | bool |
DropFunc | 删除函数5.1.4.106 | bool |
DropProc | 删除存储过程 5.1.4.106 | bool |
GetDbTypes | 获取数据库类型集合5.1.4.106 | List |
GetTriggerNames | 根据表名获取触发器集合5.1.4.106 | List |
该方法是在无实体的情况下建表 ,并且支持实体AOP
var typeBilder = db.DynamicBuilder().CreateClass("table1", new SugarTable(){}); //可以循环添加列 typeBilder.CreateProperty("Id",typeof(int),new SugarColumn(){IsPrimaryKey=true,IsIdentity=true}); typeBilder.CreateProperty("Name", typeof(string), new SugarColumn() { /*属性说明下面有*/ }); typeBilder.WithCache(); //缓存Key 表名+字段名称相加 //创建类 var type = typeBilder.BuilderType(); //创建表 db.CodeFirst.InitTables(type); //建表属性API看迁移 //根据字典转成类对象 var value= db.DynamicBuilder().CreateObjectByType(type,new Dictionary<string, object>() { { "Id", 1 }, { "Name", "jack" } }); //可以是List<Dictionary<string, object>() db.InsertableByObject(value).ExecuteCommand(); db.UpdateableByObject(value).ExecuteCommand(); db.DeleteableByObject(value).ExecuteCommand(); db.StorageableByObject(value).ExecuteCommand();//插入或者更新 //查询 带有类功能 5.1.4.84 // API和无实体查询类似 db.QueryableByObject(type).ToList();
SugarColum常用属性说明,更多属要看文档:迁移
ColumnDataType = "decimal",//强制指定列类型 默认按c#类型创建表,该类型可以覆盖C#类型,C#类型为了CRUD使用 Length = 10,//指定长度,升级到:5.1.4.129-preview+兼容了双向绑定,比如以前int不能传长度,int正常,而int(10)出错 DecimalDigits = 2,//指定小数位 (比如varchar就不能加精度会报错,数据库要支持精度的才能传) IsNullable=true,//指定是否可空 IsPrimaryKey=true,//指定是否主键, IsIdentity=true,//是否是自增,注意:Oracle用自增文档搜索:Oracle ,需要启用和数据库版本要求 ColumnDescription="test",//指定描述, DefaultValue="a",//注意:这个不支持查出直接赋值存回去,查出来后要处理一下格式才能赋值
更多用法:https://www.donet5.com/Home/Doc?typeId=2562
db.CodeFirst.InitTables(typeof(T));//具体用法看文档迁移
5.1.4.106-preview22+
//方式1:通过无实体查询方式创建视图 var sql=db.Queryable<object>().AS("表名").ToSqlString(); var name = "view01"; db.Ado.ExecuteCommand($"create view {name} as \r\n"+sql); //方式2: 通过Type创建视图 //不存在创建,内部有判断 db.QueryableByObject(typeof(Order)).CreateView("view_{0}"); //支持动态构造Type https://www.donet5.com/Home/Doc?typeId=2562
//获取存储过程名 var allNames=db.DbMaintenance.GetProcList(); //创建 db.Ado.ExecuteCommand(创建存储过程SQL); //修改 db.Ado.ExecuteCommand(修改存储过程SQL);
//获取函数名 var allNames=db.DbMaintenance.GetFuncList(); //创建 db.Ado.ExecuteCommand(创建函数SQL); //修改 db.Ado.ExecuteCommand(修改函数SQL);
//1.不缓存 var list=GetTableInfoList(false); //2.缓存不变的 var list=GetTableInfoList(true); //3.不缓存+重写SQL比如:我只要MyTable开头的表 //需要升经到:5.1.4.151+ var list= db.DbMaintenance.GetTableInfoList((dbtype, sql) => { if (dbtype == SqlSugar.DbType.SqlServer) { return sql.Replace("需要替换部分", "替换后部分"); } return sql; });
//1.不缓存 var list=db.DbMaintenance.GetColumnInfosByTableName("mytable", false); //2.缓存不变的 var list=db.DbMaintenance.GetColumnInfosByTableName("mytable", true); //3.不缓存+替换局部SQL //需要升经到:5.1.4.151+ var list= db.DbMaintenance.GetColumnInfosByTableName("mytable",(dbtype, sql) => { if (dbtype == SqlSugar.DbType.SqlServer) { return sql.Replace("需要替换部分", "替换后部分"); } return sql; });
只支持部分库 ,如果你能提供代码我可以集成进sqlsugar
//SqlServer db.DbMaintenance.BackupDataBase(db.Ado.Connection.Database, "d:\\a.bak" /*服务器路径*/);//第一个参数库名 //Sqlite db.DbMaintenance.BackupDataBase(null, "sql2014test222.db"); //sqlite 只支持.net core //MySql db.DbMaintenance.BackupDataBase(db.Ado.Connection.Database, "c:\\1.sql");//mysql 只支持.net core
2016 © donet5.comApache Licence 2.0