private static void PopulateSchedules(DbContextAccessor accessor) { var now = DateTime.Now; // Note #pragma warning disable CS8604 // 可能的 null 引用参数。 if (!accessor.Notes.IsPopulated()) #pragma warning restore CS8604 // 可能的 null 引用参数。 { #pragma warning disable CS8604 // 可能的 null 引用参数。 foreach (var user in accessor.Users.ReadyForEach()) #pragma warning restore CS8604 // 可能的 null 引用参数。 { accessor.Notes.Add(new Note { CreatorId = user?.Id, Title = $"测试{user?.Id}个人便笺", Descr = "便笺描述", CreatedTime = now }); } } #pragma warning disable CS8604 // 可能的 null 引用参数。 foreach (var user in accessor.Users.ReadyForEach()) #pragma warning restore CS8604 // 可能的 null 引用参数。 { #pragma warning disable CS8602 // 解引用可能出现空引用。 accessor.Schedules.Add(new Schedule #pragma warning restore CS8602 // 解引用可能出现空引用。 { DepartmentId = 0, CreatorId = user?.Id, Title = $"测试{user?.Id}个人日程", Address = "日程地址", Descr = "日程描述", BeginTime = now.AddDays(10), EndTime = now.AddDays(30), CreatedTime = now, Scope = ScheduleScope.Public }); } #pragma warning disable CS8602 // 解引用可能出现空引用。 accessor.Schedules.Add(new Schedule #pragma warning restore CS8602 // 解引用可能出现空引用。 { DepartmentId = 1, CreatorId = accessor.Users.ReadyQuery().First()?.Id, Title = $"测试部门日程", Address = "日程地址", Descr = "日程描述", BeginTime = now.AddDays(10), EndTime = now.AddDays(30), CreatedTime = now, Scope = ScheduleScope.Public }); }
/// <summary> /// 异步填充。 /// </summary> /// <param name="cancellationToken">给定的 <see cref="CancellationToken"/>(可选)。</param> /// <returns>返回 <see cref="Task"/>。</returns> public static async Task PopulateAsync(DbContextAccessor accessor, IServiceProvider services, CancellationToken cancellationToken = default) { accessor.NotNull(nameof(accessor)); services.NotNull(nameof(services)); // 尝试创建数据库 await accessor.Database.EnsureCreatedAsync(cancellationToken); // 填充菜单 #pragma warning disable CS8604 // 可能的 null 引用参数。 if (!accessor.Menus.IsPopulated()) #pragma warning restore CS8604 // 可能的 null 引用参数。 { PopulateMenus(accessor); } // 填充角色 #pragma warning disable CS8604 // 可能的 null 引用参数。 if (!accessor.Roles.IsPopulated()) #pragma warning restore CS8604 // 可能的 null 引用参数。 { PopulateRoles(accessor); } // 填充部门 #pragma warning disable CS8604 // 可能的 null 引用参数。 if (!accessor.Departments.IsPopulated()) #pragma warning restore CS8604 // 可能的 null 引用参数。 { PopulateDepartments(accessor); } // 填充用户 #pragma warning disable CS8604 // 可能的 null 引用参数。 if (!accessor.Users.IsPopulated()) #pragma warning restore CS8604 // 可能的 null 引用参数。 { PopulateUsers(accessor); } // 填充日程 #pragma warning disable CS8604 // 可能的 null 引用参数。 if (!accessor.Schedules.IsPopulated()) #pragma warning restore CS8604 // 可能的 null 引用参数。 { PopulateSchedules(accessor); } // 同步数据库 await accessor.SaveChangesAsync(cancellationToken); }
private static void PopulateRoles(DbContextAccessor accessor) { // Role #pragma warning disable CS8602 // 解引用可能出现空引用。 accessor.Roles.Add(new Role { Id = StoreHelper.GenerateRoleId(), Name = RoleNameAdministrator, Descr = "管理员" }); #pragma warning restore CS8602 // 解引用可能出现空引用。 accessor.Roles.Add(new Role { Id = StoreHelper.GenerateRoleId(), Name = RoleNameRegister, Descr = "注册员" }); _roleAdministrator = accessor.Roles.ReadyQuery().First(p => p.Name == RoleNameAdministrator); _roleRegister = accessor.Roles.ReadyQuery().First(p => p.Name == RoleNameRegister); // RoleMenu #pragma warning disable CS8604 // 可能的 null 引用参数。 var adminMenuIds = accessor.Menus.ReadyQuery().Select(s => s.Id).ToList(); #pragma warning restore CS8604 // 可能的 null 引用参数。 #pragma warning disable CS8602 // 解引用可能出现空引用。 var registMenuIds = adminMenuIds.Where(p => p.StartsWith("102") || p.StartsWith("103")); #pragma warning restore CS8602 // 解引用可能出现空引用。 adminMenuIds.ForEach(id => { #pragma warning disable CS8602 // 解引用可能出现空引用。 accessor.RoleMenus.Add(new RoleMenu #pragma warning restore CS8602 // 解引用可能出现空引用。 { RoleId = _roleAdministrator?.Id, MenuId = id }); }); registMenuIds.ForEach(id => { #pragma warning disable CS8602 // 解引用可能出现空引用。 accessor.RoleMenus.Add(new RoleMenu #pragma warning restore CS8602 // 解引用可能出现空引用。 { RoleId = _roleRegister?.Id, MenuId = id }); }); }
private static void PopulateDepartments(DbContextAccessor accessor) { // Branch #pragma warning disable CS8604 // 可能的 null 引用参数。 if (!accessor.Branches.IsPopulated()) #pragma warning restore CS8604 // 可能的 null 引用参数。 { accessor.Branches.Add(new Branch { Name = "测试机构", AbbrName = "机构简称" }); } #pragma warning disable CS8602 // 解引用可能出现空引用。 accessor.Departments.Add(new Department { Name = "测试部门", BranchId = 1, }); #pragma warning restore CS8602 // 解引用可能出现空引用。 }
private static void PopulateUsers(DbContextAccessor accessor) { // State #pragma warning disable CS8604 // 可能的 null 引用参数。 if (!accessor.UserStates.IsPopulated()) #pragma warning restore CS8604 // 可能的 null 引用参数。 { accessor.UserStates.Add(new UserState { Name = "正常" }); accessor.UserStates.Add(new UserState { Name = "已屏蔽" }); } var defaultPasswordHash = accessor.GetService <IPasswordHashService>().ComputeHash(DefaultPassword); #pragma warning disable CS8602 // 解引用可能出现空引用。 accessor.Users.Add(new User { Id = StoreHelper.GenerateUserId(), RoleId = _roleAdministrator?.Id, Name = UserAdministrator, PasswordHash = defaultPasswordHash }); #pragma warning restore CS8602 // 解引用可能出现空引用。 accessor.Users.Add(new User { Id = StoreHelper.GenerateUserId(), RoleId = _roleRegister?.Id, DepartmentId = 1, Name = UserRegister, PasswordHash = defaultPasswordHash }); }
private static void PopulateMenus(DbContextAccessor accessor) { // Global #pragma warning disable CS8602 // 解引用可能出现空引用。 accessor.Menus.Add(new Menu { Id = "105", ParentId = "1", Name = "系统管理", Url = "/Global/Logs", // go to Logs Rank = 1.0F }); #pragma warning restore CS8602 // 解引用可能出现空引用。 accessor.Menus.Add(new Menu { Id = "105001", ParentId = "105", Name = "角色管理", Url = "/Global/Roles", Rank = 1.1F }); accessor.Menus.Add(new Menu { Id = "105002", ParentId = "105", Name = "登录日志", Url = "/Global/UserLogins", Rank = 1.2F }); accessor.Menus.Add(new Menu { Id = "105003", ParentId = "105", Name = "操作日志", Url = "/Global/Logs", Rank = 1.3F }); accessor.Menus.Add(new Menu { Id = "105004", ParentId = "105", Name = "菜单管理", Url = "/Global/Menus", Rank = 1.4F }); // Document accessor.Menus.Add(new Menu { Id = "103", ParentId = "1", Name = "文档管理", Url = "/Document", Rank = 2.0F }); accessor.Menus.Add(new Menu { Id = "103001", ParentId = "103", Name = "文档管理", Url = "/Document/Index", Rank = 2.1F }); accessor.Menus.Add(new Menu { Id = "103002", ParentId = "103", Name = "回收站", Url = "/Document/Recycle", Rank = 2.2F }); accessor.Menus.Add(new Menu { Id = "103003", ParentId = "103", Name = "文件搜索", Url = "/Document/Search", Rank = 2.3F }); // Schedule accessor.Menus.Add(new Menu { Id = "102", ParentId = "1", Name = "日程管理", Url = "/Schedule/My", // go to My Rank = 2.0F }); accessor.Menus.Add(new Menu { Id = "102001", ParentId = "102", Name = "我的日程", Url = "/Schedule/My", Rank = 2.1F }); accessor.Menus.Add(new Menu { Id = "102002", ParentId = "102", Name = "部门日程", Url = "/Schedule/Departments", Rank = 2.2F }); accessor.Menus.Add(new Menu { Id = "102003", ParentId = "102", Name = "我的便签", Url = "/Schedule/Notes", Rank = 2.3F }); // Personnel accessor.Menus.Add(new Menu { Id = "101", ParentId = "1", Name = "人事管理", Url = "/Personnel/Users", // go to Users Rank = 1.0F }); accessor.Menus.Add(new Menu { Id = "101001", ParentId = "101", Name = "机构管理", Url = "/Personnel/Branches", Rank = 1.1F }); accessor.Menus.Add(new Menu { Id = "101002", ParentId = "101", Name = "部门管理", Url = "/Personnel/Departments", Rank = 1.2F }); accessor.Menus.Add(new Menu { Id = "101003", ParentId = "101", Name = "员工管理", Url = "/Personnel/Users", Rank = 1.3F }); }