【问题标题】:Enterprise Library: Redirecting connectionStrings section does not add new ConnectionStrings to ConfigurationManager.ConnectionStrings企业库:重定向 connectionStrings 部分不会将新的 ConnectionStrings 添加到 ConfigurationManager.ConnectionStrings
【发布时间】:2016-04-05 17:29:26
【问题描述】:

我正在尝试使用 EntLib 将连接字符串移动到外部文件,但是

ConfigurationManager.ConnectionStrings 只给了我默认的 ASP.NET 数据库,它甚至不在配置中。

data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true

我希望从 shared.config 中看到两个连接字符串。 可能是什么问题,或者我对此功能的理解有误?

App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>    
        <section name="enterpriseLibrary.ConfigurationSource" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ConfigurationSourceSection, Microsoft.Practices.EnterpriseLibrary.Common,  Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
    </configSections>    

    <enterpriseLibrary.ConfigurationSource selectedSource="System Configuration Source">
        <sources>
            <add name="System Configuration Source" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.SystemConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
            <add name="Shared" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                filePath="shared.config" />
        </sources>
        <redirectSections>
            <add sourceName="Shared" name="connectionStrings" />
        </redirectSections>
    </enterpriseLibrary.ConfigurationSource>
</configuration>

shared.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

    <connectionStrings> 
        <add name="connStr1" connectionString="Data Source=local;Initial Catalog=DB1;Integrated Security=True"
          providerName="System.Data.SqlClient" />
    <add name="connStr2" connectionString="Data Source=local;Initial Catalog=DB2;Integrated Security=True"
          providerName="System.Data.SqlClient" />
    </connectionStrings>

</configuration>

【问题讨论】:

    标签: c# .net app-config enterprise-library enterprise-library-5


    【解决方案1】:

    实际上,ConfigurationManager.ConnectionStrings 对企业库基础架构一无所知。 默认情况下,不能使用 Enterprise Library 的 ConfigurationSource 重定向部分。

    您应该使用configSource 属性,这是.NET Framework 的特性,而不是企业库。

    app.config:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <connectionStrings configSource="sharedConnectionStrings.config" />
    </configuration>
    

    sharedConnectionStrings.config:

    <?xml version="1.0" encoding="utf-8" ?>
    <connectionsStrings>
        <add name="connStr1"
             connectionString="Data Source=local;Initial Catalog=DB1;Integrated Security=True"
             providerName="System.Data.SqlClient" />
        <add name="connStr2"
             connectionString="Data Source=local;Initial Catalog=DB2;Integrated Security=True"
             providerName="System.Data.SqlClient" />
    </connectionsStrings>
    

    更新:如果您想使用企业库功能,请不要直接使用ConfigurationManager.ConnectionStrings。相反,请使用 Enterprise Library 功能来创建数据库连接,例如:

     Database db = DatabaseFactory.CreateDatabase(“Tom’s Connection”);
    

    然后就可以使用企业库的配置源了。

    我发现这个link with example 很有用。

    【讨论】:

    • 当我在他们的配置工具中看到重定向连接字符串时,我认为它支持默认部分重定向。可悲的是,我几乎已经存在了 :) 默认重定向机制不允许继承和合并配置的那些很酷的功能
    猜你喜欢
    • 2019-06-22
    • 2018-01-07
    • 2011-08-13
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 2015-12-17
    相关资源
    最近更新 更多