CodeFrist实现

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();
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部