1.根据字符串中配置的信息动态生成数据库
注入配置SqlSugar
C#
container.Register<ISqlSugarClient>(context =>
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() {
DbType = DbType.MySql,
//自动关闭连接
IsAutoCloseConnection = true,
ConnectionString=builder.Configuration.GetConnectionString("MyCon")
});
return db;
});
ToolContorller
C#
[HttpGet]
public async Task<bool> CodeFirst()
{
}
2.通过反射生成表结构
C#
//1.创建数据库
_db.DbMaintenance.CreateDatabase();
//2.通过反射,加载程序集,读取到所有的类型,然后根据实体创建表
string nspace = "Model.Entitys";
Type[] ass = Assembly.LoadFrom(AppContext.BaseDirectory+"Model.dll")
.GetTypes().Where(p=>p.Namespace == nspace).ToArray();
3.添加测试数据
C#
//3.添加测试数据
//3.1创建CodeFrist
_db.CodeFirst.SetStringDefaultLength(200).InitTables(ass);
//3.2初始超级管理员
Users user = new Users()
{
Id = Guid.NewGuid().ToString(),
Name = "admin",
NickName = "超级管理员",
Password = "123456",
UserType = 0,
IsEnable = true,
Description = "数据库初始化时默认添加的超级管理员",
CreateDate = DateTime.Now,
CreateUserId =""
};
//3.3获取初始化的超级管理员
string? userId = (await _db.Insertable(user).ExecuteReturnEntityAsync()).Id;
//3.4初始化菜单
var m1 = new Menu()
{
Id = Guid.NewGuid().ToString(),
Name = "菜单管理",
Index = "/menu",
FilePath = "menu.vue",
ParentId = "",
Order = 1,
IsEnable = true,
Icon = "folder",
Description = "数据库初始化时默认添加的默认菜单",
CreateDate = DateTime.Now,
CreateUserId = userId
};
string? mid1 = (await _db.Insertable(m1).ExecuteReturnEntityAsync()).Id;
var m11 = new Menu()
{
Id = Guid.NewGuid().ToString(),
Name = "菜单列表",
Index = "/menu",
FilePath = "menu.vue",
ParentId = mid1,
Order = 1,
IsEnable = true,
Icon = "notebook",
Description = "数据库初始化时默认添加的默认菜单",
CreateDate = DateTime.Now,
CreateUserId = userId
};
await _db.Insertable(m11).ExecuteReturnEntityAsync();
var m2 = new Menu()
{
Id = Guid.NewGuid().ToString(),
Name = "角色管理",
Index = "/role",
FilePath = "role.vue",
ParentId = "",
Order = 1,
IsEnable = true,
Icon = "folder",
Description = "数据库初始化时默认添加的默认菜单",
CreateDate = DateTime.Now,
CreateUserId = userId
};
string? mid2 = (await _db.Insertable(m2).ExecuteReturnEntityAsync()).Id;
var m22 = new Menu()
{
Id = Guid.NewGuid().ToString(),
Name = "角色列表",
Index = "/role",
FilePath = "role.vue",
ParentId = mid2,
Order = 1,
IsEnable = true,
Icon = "notebook",
Description = "数据库初始化时默认添加的默认菜单",
CreateDate = DateTime.Now,
CreateUserId = userId
};
await _db.Insertable(m22).ExecuteReturnEntityAsync();
var m3 = new Menu()
{
Id = Guid.NewGuid().ToString(),
Name = "用户管理",
Index = "/user",
FilePath = "user.vue",
ParentId = "",
Order = 1,
IsEnable = true,
Icon = "folder",
Description = "数据库初始化时默认添加的默认菜单",
CreateDate = DateTime.Now,
CreateUserId = userId
};
string? mid3 = (await _db.Insertable(m3).ExecuteReturnEntityAsync()).Id;
var m33 = new Menu()
{
Id = Guid.NewGuid().ToString(),
Name = "用户列表",
Index = "/user",
FilePath = "user.vue",
ParentId = mid3,
Order = 1,
IsEnable = true,
Icon = "notebook",
Description = "数据库初始化时默认添加的默认菜单",
CreateDate = DateTime.Now,
CreateUserId = userId
};
return await _db.Insertable(m33).ExecuteCommandIdentityIntoEntityAsync();