Skip to content

同时储存多份数据库配置,并支持热切换

Jeffrey Su edited this page Nov 6, 2019 · 6 revisions

配置

  1. 在 Senparc.Web/appsettings.json 中,配置 SenparcCoreSetting 节点下的 DatabaseName 值,如:
  "SenparcCoreSetting": {
    //...
    "DatabaseName": "Local", 
    //...
  },
  1. 在 Senparc.Web/App_Data/DataBase/SenparcConfig.config 中,可设置多个节点,配置不同的数据库连接字符串(Name 不可重复),如:
<?xml version="1.0" encoding="utf-8"?>
<SenparcConfigs>
  <SenparcConfig>
    <Id>1</Id>
    <Name>Client</Name>
    <Host><![CDATA[.\]]></Host>
    <DataBase><![CDATA[SCF]]></DataBase>
    <UserName><![CDATA[sa]]></UserName>
    <Password><![CDATA[123]]></Password>
    <Provider><![CDATA[System.Data.SqlClient]]></Provider>
    <ConnectionString><![CDATA[data source=.\;initial catalog=SCF;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework]]></ConnectionString>
    <!--本地数据库-->
    <ConnectionStringFull><![CDATA[Server=192.168.8.254,14480;Database=SCF; User ID=sa; Password=@WSXzaq1;Application Name=fxu]]></ConnectionStringFull>
    <ApplicationPath><![CDATA[/]]></ApplicationPath>
  </SenparcConfig>
  <SenparcConfig>
    <Id>2</Id>
    <Name>Local</Name>
    <Host><![CDATA[.\]]></Host>
    <DataBase><![CDATA[SCF]]></DataBase>
    <UserName><![CDATA[sa]]></UserName>
    <Password><![CDATA[123]]></Password>
    <Provider><![CDATA[System.Data.SqlClient]]></Provider>
    <ConnectionString><![CDATA[data source=.\;initial catalog=SCF;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework]]></ConnectionString>
    <!--本地数据库-->
    <ConnectionStringFull><![CDATA[Server=.\;Database=SCF; initial catalog=SCF;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework]]></ConnectionStringFull>
    <ApplicationPath><![CDATA[/]]></ApplicationPath>
  </SenparcConfig>
</SenparcConfigs>
  1. 完成配置后,系统将自动将 appsettings.json 中配置的 Local 和 SenparcConfig.config 中的 <Name>Local</Name> 对应节点匹配,调用此节点下的数据库配置。

热切换

只需一行命令即可瞬间切换:

// "Local" 为对应数据库配置的 Name
Senparc.Scf.Core.Config.SiteConfig.SenparcCoreSetting.DatabaseName = "Local";