我一直在努力解决这个问题,尽管优雅的东西是首选,但任何旧的hack都可以做到这一点:)
我有一个注册为以下内容的存储库:
<castle>
<properties>
<myConnStr>Data Source=COMPUTERNAME\SQL2008;Initial Catalog=MyDB;Persist Security Info=True;User ID=username;Password=password</myConnStr>
</properties>
<components>
<component id="MyRepository" service="DomainModel.Abstract.IMyRepository, DomainModel" type="DomainModel.Concrete.MyRepository, DomainModel" lifestyle="PerWebRequest">
<parameters>
<connectionString>#{myConnStr}</connectionString>
</parameters>
</component>
</components>
我试图设置我的配置文件,以便不必为各种部署选项修改myConnStr属性部分。如果我只能在首次加载配置时只建立一次connectionString,那很好(甚至是理想的),但是在设置容器时我不知道如何设置该值。
如果我不使用温莎城堡,那么我将定义多个连接字符串,例如“ connectionStringStaging”,“ connectionStringProduction”,然后根据我的环境(计算机名称或URL)通过代码选择适当的一个。我该如何使用温莎城堡物业做类似的事情?修改组件的“参数”而不是“属性”也是可以接受的。
最佳答案
我希望有一个简单的解决方案,而不是推动该框架为您执行魔术。我会将连接字符串包装在另一个类中,以提供与您的存储库的正确连接,并将其添加到依赖关系树中。
public interface IConnectionFactory
{
public string GetConnectionString();
}
将此传递到您的“存储库”而不是字符串。