企业库:重定向 connectionStrings 部分不会将新的 ConnectionStrings 添加到 ConfigurationManager.ConnectionStrings
Enterprise Library: Redirecting connectionStrings section does not add new ConnectionStrings to ConfigurationManager.ConnectionStrings
我正在尝试使用 EntLib 将 connectionStrings 移动到外部文件,但是
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>
实际上,ConfigurationManager.ConnectionStrings
对企业图书馆基础设施一无所知。
默认情况下,无法使用 Enterprise Library 的 ConfigurationSource 重定向部分。
您应该使用 configSource
属性,这是 .NET Framework 的特性,而不是 Enterprise Library。
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
。相反,使用企业库功能来创建数据库连接,如:
Database db = DatabaseFactory.CreateDatabase(“Tom’s Connection”);
然后您可以使用企业库的配置源。
我发现这个 link with example 很有用。
我正在尝试使用 EntLib 将 connectionStrings 移动到外部文件,但是
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>
实际上,ConfigurationManager.ConnectionStrings
对企业图书馆基础设施一无所知。
默认情况下,无法使用 Enterprise Library 的 ConfigurationSource 重定向部分。
您应该使用 configSource
属性,这是 .NET Framework 的特性,而不是 Enterprise Library。
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
。相反,使用企业库功能来创建数据库连接,如:
Database db = DatabaseFactory.CreateDatabase(“Tom’s Connection”);
然后您可以使用企业库的配置源。
我发现这个 link with example 很有用。