/// <summary> /// 安装模块之后,安装菜单 /// </summary> /// <param name="register"></param> /// <returns></returns> public async Task InstallMenuAsync(IXscfRegister register, InstallOrUpdate installOrUpdate) { var topMenu = await _sysMenuService.Value.GetObjectAsync(z => z.MenuName == "扩展模块").ConfigureAwait(false); var currentMenu = await _sysMenuService.Value.GetObjectAsync(z => z.ParentId == topMenu.Id && z.MenuName == register.MenuName).ConfigureAwait(false); SysMenuDto menuDto; if (installOrUpdate == InstallOrUpdate.Update && currentMenu != null) { //更新菜单 menuDto = _sysMenuService.Value.Mapper.Map <SysMenuDto>(currentMenu); menuDto.MenuName = register.MenuName; //更新菜单名称 menuDto.Icon = register.Icon; //更新菜单图标 } else { //新建菜单 var icon = register.Icon.IsNullOrEmpty() ? "fa fa-bars" : register.Icon; var order = register.Uid == SiteConfig.SYSTEM_XSCF_MODULE_UID ? 150 : 20; menuDto = new SysMenuDto(true, null, register.MenuName, topMenu.Id, $"/Admin/XscfModule/Start/?uid={register.Uid}", icon, order, true, null); } var sysMemu = await _sysMenuService.Value.CreateOrUpdateAsync(menuDto).ConfigureAwait(false); if (installOrUpdate == InstallOrUpdate.Install) { //更新菜单信息 var updateMenuDto = new UpdateMenuId_XscfModuleDto(register.Uid, sysMemu.Id); await base.UpdateMenuId(updateMenuDto).ConfigureAwait(false); } }
/// <summary> /// 安装模块之后,安装菜单 /// </summary> /// <param name="register"></param> /// <returns></returns> public async Task InstallMenuAsync(IXncfRegister register, InstallOrUpdate installOrUpdate) { var topMenu = await _sysMenuService.Value.GetObjectAsync(z => z.MenuName == "扩展模块").ConfigureAwait(false); var currentMenu = await _sysMenuService.Value.GetObjectAsync(z => z.ParentId == topMenu.Id && z.MenuName == register.MenuName).ConfigureAwait(false); SysMenuDto menuDto; if (installOrUpdate == InstallOrUpdate.Update && currentMenu != null) { //更新菜单 menuDto = _sysMenuService.Value.Mapper.Map <SysMenuDto>(currentMenu); menuDto.MenuName = register.MenuName; //更新菜单名称 menuDto.Icon = register.Icon; //更新菜单图标 } else { //新建菜单 var icon = register.Icon.IsNullOrEmpty() ? "fa fa-bars" : register.Icon; var order = 20; switch (register.Uid) { case SiteConfig.SYSTEM_XNCF_MODULE_SERVICE_UID: order = 160; break; case SiteConfig.SYSTEM_XNCF_MODULE_AREAS_ADMIN_UID: order = 150; break; default: break; } menuDto = new SysMenuDto(true, null, register.MenuName, topMenu.Id, $"/Admin/XncfModule/Start/?uid={register.Uid}", icon, order, true, null); } var sysMemu = await _sysMenuService.Value.CreateOrUpdateAsync(menuDto).ConfigureAwait(false); if (installOrUpdate == InstallOrUpdate.Install) { //更新菜单信息 SysPermissionDto sysPermissionDto = new SysPermissionDto() { IsMenu = true, ResourceCode = sysMemu.ResourceCode, RoleId = "1", RoleCode = "administrator", PermissionId = sysMemu.Id }; SenparcEntities db = _serviceProvider.GetService <SenparcEntities>(); db.SysPermission.Add(new SysPermission(sysPermissionDto)); await db.SaveChangesAsync(); var updateMenuDto = new UpdateMenuId_XncfModuleDto(register.Uid, sysMemu.Id); await base.UpdateMenuIdAsync(updateMenuDto).ConfigureAwait(false); } }
public override async Task InstallOrUpdateAsync(IServiceProvider serviceProvider, InstallOrUpdate installOrUpdate) { //安装或升级版本时更新数据库 await base.MigrateDatabaseAsync(serviceProvider); }
public override async Task InstallOrUpdateAsync(IServiceProvider serviceProvider, InstallOrUpdate installOrUpdate) { XscfModuleServiceExtension xscfModuleServiceExtension = serviceProvider.GetService <XscfModuleServiceExtension>(); SenparcEntities senparcEntities = (SenparcEntities)xscfModuleServiceExtension.BaseData.BaseDB.BaseDataContext; //更新数据库 var pendingMigs = await senparcEntities.Database.GetPendingMigrationsAsync(); if (pendingMigs.Count() > 0) { senparcEntities.ResetMigrate(); //重置合并状态 senparcEntities.Migrate(); //进行合并 } var systemModule = xscfModuleServiceExtension.GetObject(z => z.Uid == this.Uid); if (systemModule == null) { //只在未安装的情况下进行安装,InstallModuleAsync会访问到此方法,不做判断可能会引发死循环。 //常规模块中请勿在此方法中自动安装模块! await xscfModuleServiceExtension.InstallModuleAsync(this.Uid).ConfigureAwait(false); } await base.InstallOrUpdateAsync(serviceProvider, installOrUpdate); }
/// <summary> /// 安装或更新过程需要执行的业务 /// </summary> /// <param name="serviceProvider"></param> /// <param name="installOrUpdate"></param> /// <returns></returns> public override async Task InstallOrUpdateAsync(IServiceProvider serviceProvider, InstallOrUpdate installOrUpdate) { //更新数据库 await base.MigrateDatabaseAsync <MySenparcEntities>(serviceProvider); switch (installOrUpdate) { case InstallOrUpdate.Install: //新安装 var colorService = serviceProvider.GetService <ColorService>(); var color = colorService.GetObject(z => true); if (color == null) //如果是纯第一次安装,理论上不会有残留数据 { //创建默认颜色 ColorDto colorDto = await colorService.CreateNewColor().ConfigureAwait(false); } break; case InstallOrUpdate.Update: //更新 break; default: throw new ArgumentOutOfRangeException(); } }
/// <summary> /// 安装代码 /// </summary> public virtual Task InstallOrUpdateAsync(IServiceProvider serviceProvider, InstallOrUpdate installOrUpdate) { return(Task.CompletedTask); }
public override async Task InstallOrUpdateAsync(IServiceProvider serviceProvider, InstallOrUpdate installOrUpdate) { //更新数据库 await base.MigrateDatabaseAsync <DatabaseToolkitEntities>(serviceProvider); }
public async Task InstallOrUpdateAsync(IServiceProvider serviceProvider, InstallOrUpdate installOrUpdate) { //更新数据库 await base.MigrateDatabaseAsync <WeixinSenparcEntities>(serviceProvider); }
public override async Task InstallOrUpdateAsync(IServiceProvider serviceProvider, InstallOrUpdate installOrUpdate) { }
public override async Task InstallOrUpdateAsync(IServiceProvider serviceProvider, InstallOrUpdate installOrUpdate) { //TODO:DI注入注册时候,根据指定数据库进行绑定 XncfModuleServiceExtension xncfModuleServiceExtension = serviceProvider.GetService <XncfModuleServiceExtension>(); //SenparcEntities senparcEntities = (SenparcEntities)xncfModuleServiceExtension.BaseData.BaseDB.BaseDataContext; SenparcEntities senparcEntities = (SenparcEntities)xncfModuleServiceExtension.BaseData.BaseDB.BaseDataContext; //更新数据库 var pendingMigs = await senparcEntities.Database.GetPendingMigrationsAsync(); if (pendingMigs.Count() > 0) { senparcEntities.ResetMigrate();//重置合并状态 try { var script = senparcEntities.Database.GenerateCreateScript(); SenparcTrace.SendCustomLog("senparcEntities.Database.GenerateCreateScript", script); senparcEntities.Migrate();//进行合并 } catch (Exception ex) { var currentDatabaseConfiguration = DatabaseConfigurationFactory.Instance.Current; SenparcTrace.BaseExceptionLog(new NcfDatabaseException(ex.Message, currentDatabaseConfiguration.GetType(), senparcEntities.GetType(), ex)); } } //更新数据库(目前不使用 SystemServiceEntities 存放数据库模型) //await base.MigrateDatabaseAsync<SystemServiceEntities>(serviceProvider); var systemModule = xncfModuleServiceExtension.GetObject(z => z.Uid == this.Uid); if (systemModule == null) { //只在未安装的情况下进行安装,InstallModuleAsync会访问到此方法,不做判断可能会引发死循环。 //常规模块中请勿在此方法中自动安装模块! await xncfModuleServiceExtension.InstallModuleAsync(this.Uid).ConfigureAwait(false); } await base.InstallOrUpdateAsync(serviceProvider, installOrUpdate); }
public override async Task InstallOrUpdateAsync(IServiceProvider serviceProvider, InstallOrUpdate installOrUpdate) { //安装或升级版本时更新数据库 await base.MigrateDatabaseAsync(serviceProvider); //根据安装或更新不同条件执行逻辑 switch (installOrUpdate) { case InstallOrUpdate.Install: //新安装 break; case InstallOrUpdate.Update: //更新 break; default: throw new ArgumentOutOfRangeException(); } }
/// <summary> /// 安装或更新过程需要执行的业务 /// </summary> /// <param name="serviceProvider"></param> /// <param name="installOrUpdate"></param> /// <returns></returns> public override async Task InstallOrUpdateAsync(IServiceProvider serviceProvider, InstallOrUpdate installOrUpdate) { //更新数据库 await base.MigrateDatabaseAsync <MLEntities>(serviceProvider); switch (installOrUpdate) { case InstallOrUpdate.Install: //新安装,建目录 var catalogService = serviceProvider.GetService <CatalogService>(); var catalogRows = catalogService.GetCount(z => true); if (catalogRows <= 0) { await catalogService.InitCatalog(); } var articleService = serviceProvider.GetService <ArticleService>(); var articleRows = articleService.GetCount(w => true); if (articleRows <= 0) { await articleService.InitArticle(); } break; case InstallOrUpdate.Update: //更新 break; default: throw new ArgumentOutOfRangeException(); } }
public override async Task InstallOrUpdateAsync(IServiceProvider serviceProvider, InstallOrUpdate installOrUpdate) { #if (UseDatabase || UseSample) //安装或升级版本时更新数据库 await base.MigrateDatabaseAsync(serviceProvider); //根据安装或更新不同条件执行逻辑 switch (installOrUpdate) { case InstallOrUpdate.Install: //新安装 #if (UseSample) #region 初始化数据库数据 var colorService = serviceProvider.GetService <ColorService>(); var color = colorService.GetObject(z => true); if (color == null) //如果是纯第一次安装,理论上不会有残留数据 { ColorDto colorDto = await colorService.CreateNewColor().ConfigureAwait(false); //创建默认颜色 } #endregion #endif break; case InstallOrUpdate.Update: //更新 break; default: throw new ArgumentOutOfRangeException(); } #endif }
public override Task InstallOrUpdateAsync(IServiceProvider serviceProvider, InstallOrUpdate installOrUpdate) { Console.WriteLine(installOrUpdate); return(Task.CompletedTask); }