Чтение конфигурации, должно ли оно быть ограничено кодом клиента? - PullRequest
0 голосов
/ 03 апреля 2009

Я просто пишу код доступа к данным. Я решил передать имя строки подключения из конфигурации через внедрение конструктора, которое затем считывает хранилище и использует для создания 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);
    }

} 

Ответы [ 3 ]

2 голосов
/ 03 апреля 2009

Я бы предпочел передать фактическую строку соединения (или даже Dependency Inject). Это помогает поддерживать SoC и SRP .

0 голосов
/ 09 апреля 2009

ЕСЛИ вы передаете строку подключения в DAL, вы делаете что-то вне уровня данных, осведомляя о базе данных, что является нарушением уровня. Ничто за пределами DAL не должно иметь никаких сведений о том, что связано с БД, если вы хотите, чтобы клиент установил, какую строку подключения использовать, а затем задали конфигурацию, и ничего более.

Если вы хотите отделить строку подключения, используйте фабричный шаблон и пусть он беспокоится о том, какую строку подключения использовать, принципал единой ответственности. Вы можете использовать внедрение зависимостей, конфигурационный файл и т. Д.

0 голосов
/ 03 апреля 2009

Могут ли разные клиенты использовать разные строки подключения? Если так, то я прочитал бы конфигурацию в клиенте и прошел бы через. Если всем клиентам потребуется один и тот же strinn соединения, сохраните эту информацию на уровне данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...