我只是在写一些数据访问代码。我决定通过构造函数注入从配置传递连接字符串的名称,然后存储库读取并用于构造SqlConnectionStringBuilder。
考虑一下我可能不需要SqlConnectionStringBuilder,但这是另一回事。
我应该在这里阅读配置还是仅限于客户端代码?意见?
public class SqlRepository : IRepository
{
private SqlConnectionStringBuilder _connString;
public SqlRepository(string connectionStringName)
{
var connStringSetting = ConfigurationManager.ConnectionStrings[connectionStringName];
if (connStringSetting == null)
throw new ArgumentException("Could not find connection string in configuration.");
_connString = new SqlConnectionStringBuilder(connStringSetting.ConnectionString);
}
}
答案 0 :(得分:2)
答案 1 :(得分:0)
不同的客户可以使用不同的连接字符串吗?如果是这样,我会在客户端中读取配置并将其传递给我。如果所有客户端都需要相同的连接strinn,那么请将该信息保存在数据层中。
答案 2 :(得分:0)
如果您将连接字符串传递给DAL,那么您可以在数据层一侧查找数据库,这是一个图层违规。如果你想让客户端设置要使用的连接字符串,那么DAL之外的任何内容都不应该知道任何与DB相关的知识,然后让它们设置配置,仅此而已。
如果要解耦连接字符串,请使用工厂模式,并让它担心要使用的连接字符串,单一责任主体。您可以使用依赖注入,配置文件等。