public SenparcEntities CreateDbContext(string[] args) { //修复 https://github.com/NeuCharFramework/NCF/issues/13 发现的问题(在非Web环境下无法得到网站根目录路径) IRegisterService register = RegisterService.Start(new SenparcSetting()); SiteConfig.SenparcCoreSetting.DatabaseName = "Local"; //指定数据库配置,对应 Appp_Data/Database/SenparcConfig.config 下的配置 CO2NET.Config.RootDictionaryPath = Path.Combine(AppContext.BaseDirectory, "..\\..\\..\\"); // //如果运行 Add-Migration 命令,并且获取不到正确的网站根目录,此处可能无法自动获取到连接字符串(上述#13问题), //也可通过下面已经注释的的提供默认值方式解决(不推荐) var sqlConnection = SenparcDatabaseConfigs.ClientConnectionString; //?? "Server=.\\;Database=NCF;Trusted_Connection=True;integrated security=True;"; Console.WriteLine("============= 连接字符串 ==============="); Console.WriteLine(SenparcDatabaseConfigs.ClientConnectionString); Console.WriteLine("========================================"); Service.Register systemServiceRegister = new Service.Register(); XncfRegisterManager.XncfDatabaseList.Add(systemServiceRegister);//添加注册 var builder = new DbContextOptionsBuilder <SenparcEntities>(); builder.UseSqlServer(sqlConnection, b => systemServiceRegister.DbContextOptionsAction(b, "Senparc.Web"));//beta5 return(new SenparcEntities(builder.Options)); }
public async Task <IActionResult> OnGetAsync() { try { var adminUserInfo = await _accountInfoService.GetObjectAsync(z => true);//检查是否已初始化 if (adminUserInfo == null) { throw new Exception("需要初始化"); } } catch (Exception) { //开始安装系统模块(Service) Senparc.Service.Register serviceRegister = new Service.Register(); await serviceRegister.InstallOrUpdateAsync(_serviceProvider, Scf.Core.Enums.InstallOrUpdate.Install); //开始安装系统模块(Admin) Senparc.Areas.Admin.Register adminRegister = new Areas.Admin.Register(); await adminRegister.InstallOrUpdateAsync(_serviceProvider, Scf.Core.Enums.InstallOrUpdate.Install); //((SenparcEntities)_accountInfoService.BaseData.BaseDB.BaseDataContext).ResetMigrate();//重置合并状态 //((SenparcEntities)_accountInfoService.BaseData.BaseDB.BaseDataContext).Migrate();//进行合并 return(Page()); } //base.Response.StatusCode = 404; return(new StatusCodeResult(404));//已经安装完毕,且存在管理员则不进行安装 }
public async Task <IActionResult> OnGetAsync() { try { MultipleDatabaseType = DatabaseConfigurationFactory.Instance.Current.MultipleDatabaseType; var adminUserInfo = await _accountInfoService.GetObjectAsync(z => true);//检查是否已初始化 if (adminUserInfo == null) { throw new Exception("需要初始化"); } } catch (Exception) { { //开始安装系统模块(Service) Senparc.Service.Register serviceRegister = new Service.Register(); await serviceRegister.InstallOrUpdateAsync(_serviceProvider, Ncf.Core.Enums.InstallOrUpdate.Install); //启用系统模块(Service) var serviceModule = await _xncfModuleService.GetObjectAsync(z => z.Uid == serviceRegister.Uid); serviceModule.UpdateState(Ncf.Core.Enums.XncfModules_State.开放); } { //开始安装系统模块(Admin) Senparc.Areas.Admin.Register adminRegister = new Areas.Admin.Register(); await adminRegister.InstallOrUpdateAsync(_serviceProvider, Ncf.Core.Enums.InstallOrUpdate.Install); //启用系统模块(Admin) var adminModule = await _xncfModuleService.GetObjectAsync(z => z.Uid == adminRegister.Uid); adminModule.UpdateState(Ncf.Core.Enums.XncfModules_State.开放); //一次性保存修改 await _xncfModuleService.SaveObjectAsync(adminModule).ConfigureAwait(false); } //((SenparcEntities)_accountInfoService.BaseData.BaseDB.BaseDataContext).ResetMigrate();//重置合并状态 //((SenparcEntities)_accountInfoService.BaseData.BaseDB.BaseDataContext).Migrate();//进行合并 return(Page()); } //base.Response.StatusCode = 404; return(new StatusCodeResult(404));//已经安装完毕,且存在管理员则不进行安装 }
public SenparcEntities CreateDbContext(string[] args) { SiteConfig.SenparcCoreSetting.DatabaseName = "Local"; //指定数据库配置,对应 Appp_Data/Database/SenparcConfig.config 下的配置 CO2NET.Config.RootDictionaryPath = Path.Combine(AppContext.BaseDirectory, "..\\..\\..\\", "..\\Senparc.Web"); // var repository = LogManager.CreateRepository("NETCoreRepository"); var serviceCollection = new ServiceCollection(); var configBuilder = new ConfigurationBuilder(); var config = configBuilder.Build(); var senparcSetting = new SenparcSetting() { IsDebug = true }; serviceCollection.AddSenparcGlobalServices(config); serviceCollection.AddMemoryCache();//使用内存缓存 //修复 https://github.com/SenparcCoreFramework/SCF/issues/13 发现的问题(在非Web环境下无法得到网站根目录路径) IRegisterService register = RegisterService.Start(senparcSetting); //如果运行 Add-Migration 命令,并且获取不到正确的网站根目录,此处可能无法自动获取到连接字符串(上述#13问题), //也可通过下面已经注释的的提供默认值方式解决(不推荐) var sqlConnection = SenparcDatabaseConfigs.ClientConnectionString; //?? "Server=.\\;Database=SCF;Trusted_Connection=True;integrated security=True;"; Console.WriteLine("============================"); Console.WriteLine(SenparcDatabaseConfigs.ClientConnectionString); Console.WriteLine("============================"); Service.Register systemServiceRegister = new Service.Register(); Senparc.Scf.XscfBase.Register.XscfDatabaseList.Add(systemServiceRegister);//添加注册 var builder = new DbContextOptionsBuilder <SenparcEntities>(); //builder.UseSqlServer(sqlConnection, b => systemServiceRegister.DbContextOptionsAction(b, "Senparc.Web"));//beta4 builder.UseSqlServer(sqlConnection, b => systemServiceRegister.DbContextOptionsAction(b, "Senparc.Service"));//beta5 return(new SenparcEntities(builder.Options)); }
public async Task <IActionResult> OnGetAsync() { try { Console.WriteLine("进入安装程序,检测是否需要初始化"); MultipleDatabaseType = DatabaseConfigurationFactory.Instance.Current.MultipleDatabaseType; var adminUserInfo = await _accountInfoService.GetObjectAsync(z => true);//检查是否已初始化 if (adminUserInfo == null) { throw new Exception("需要初始化"); } } catch (Exception) { { Senparc.Service.Register serviceRegister = new Service.Register(); //添加初始化多租户信息 if (SiteConfig.SenparcCoreSetting.EnableMultiTenant) { var httpContext = _httpContextAccessor.Value.HttpContext; try { //初始化数据库 var(initDbSuccess, initDbMsg) = await serviceRegister.InitDatabase(_serviceProvider, _tenantInfoService, _httpContextAccessor.Value.HttpContext); if (!initDbSuccess) { throw new NcfDatabaseException($"ServiceRegister.InitDatabase 失败:{initDbMsg}", DatabaseConfigurationFactory.Instance.Current.GetType()); } var tenantInfo = await _tenantInfoService.CreateInitTenantInfoAsync(httpContext); //重置租户状态 CreatedRequestTenantInfo = await _tenantInfoService.SetScopedRequestTenantInfoAsync(httpContext); TenantInfoDto = _tenantInfoService.Mapper.Map <TenantInfoDto>(await _tenantInfoService.GetObjectAsync(z => z.Id == CreatedRequestTenantInfo.Id)); } catch (Exception ex) { //如果已经安装过,则不处理 //TODO:特定的Exception Console.WriteLine(ex.Message); throw; } finally { } } //开始安装系统模块(Service) await serviceRegister.InstallOrUpdateAsync(_serviceProvider, Ncf.Core.Enums.InstallOrUpdate.Install); //启用系统模块(Service) var serviceModule = await _xncfModuleService.GetObjectAsync(z => z.Uid == serviceRegister.Uid); serviceModule.UpdateState(Ncf.Core.Enums.XncfModules_State.开放); } { //开始安装系统模块(Admin) Senparc.Areas.Admin.Register adminRegister = new Areas.Admin.Register(); await adminRegister.InstallOrUpdateAsync(_serviceProvider, Ncf.Core.Enums.InstallOrUpdate.Install); //启用系统模块(Admin) var adminModule = await _xncfModuleService.GetObjectAsync(z => z.Uid == adminRegister.Uid); adminModule.UpdateState(Ncf.Core.Enums.XncfModules_State.开放); //一次性保存修改 await _xncfModuleService.SaveObjectAsync(adminModule).ConfigureAwait(false); } //((SenparcEntities)_accountInfoService.BaseData.BaseDB.BaseDataContext).ResetMigrate();//重置合并状态 //((SenparcEntities)_accountInfoService.BaseData.BaseDB.BaseDataContext).Migrate();//进行合并 return(Page()); } //base.Response.StatusCode = 404; return(new StatusCodeResult(404));//已经安装完毕,且存在管理员则不进行安装 }