我已經整理了我所擁有的許多C#.NET解決方案的連接字符串信息。以前,每個項目都以自己的格式存儲連接字符串,要求我爲每次軟件安裝修改多個文件。Castle Windsor/ActiveRecord/NHibernate:如何攔截/修改連接字符串
只剩下一個解決方案給我帶來麻煩。這個特殊的解決方案使用Castle Windsor 2.0,ActiveRecord 2.0和NHibernate 2.1。該代碼從XML文件讀取其配置。我希望從配置文件中刪除連接字符串,並在代碼中以編程方式進行設置。
這裏是代碼的相關章節發起溫莎:
windsorContainer = new WindsorContainer(new XmlInterpreter(xmlFileName));
windsorContainer.Resolve<IWindsorConfigurator>().Configure(windsorContainer);
logger = windsorContainer.Resolve<ILogger>();
下面是XML文件的內容:
<?xml version="1.0"?>
<configuration>
<properties>
<connectionString>Server=*****;Database=*****;User Id=*****;Password=*****</connectionString>
</properties>
<facilities>
<facility id="logging" type="Castle.Facilities.Logging.LoggingFacility, Castle.Facilities.Logging" loggingApi="log4net" configFile="Configs/log4net.config" />
<facility id="atm" type="Castle.Facilities.AutomaticTransactionManagement.TransactionFacility, Castle.Facilities.AutomaticTransactionManagement" />
<facility id="arfacility" type="Castle.Facilities.ActiveRecordIntegration.ActiveRecordFacility, Castle.Facilities.ActiveRecordIntegration" isDebug="false" isWeb="false">
<!-- Configure the namespaces for the models using Active Record Integration -->
<assemblies>
<item>ChronoSteril.Application</item>
</assemblies>
<config>
<add key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
<add key="dialect" value="NHibernate.Dialect.MsSql2005Dialect" />
<add key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="connection.connection_string" value="#{connectionString}" />
<add key="hibernate.cache.provider_class" value="NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache" />
<add key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle" />
<add key="hibernate.expiration" value="60" />
</config>
</facility>
</facilities>
<components>
<component id="windsorConfigurator" service="ChronoSteril.Application.IWindsorConfigurator, ChronoSteril.Application" type="ChronoSteril.WinApp.ClarionIntegrationWindsorConfigurator, ChronoSteril.WinApp" />
</components>
我不熟悉的溫莎。在我的Google之旅中,我確實看到了一些以編程方式添加設施的代碼,但這些示例對我的Windsor版本無效(,我假設爲)。
問題:任何人都可以指導我從XML文件中刪除連接字符串信息,並允許我在代碼中設置它?
謝謝!
[This SO question](http://stackoverflow.com/questions/4456652/programmatically-configure-activerecordfacility-for-multiple-databases)包含了一篇關於使用'InPlaceConfigurationSource'以編程方式初始化ActiveRecord Facility的文章的鏈接。它可能適用於你正在做的事情: – PatrickSteele
謝謝你的評論。雖然您的鏈接及其包含的鏈接直接解決了我的問題,但確實幫助我優化了搜索條件,並找到了解決問題的解決方案。我在下面展示它。 –