Как объект .net SqlConnection проверяет синтаксически правильность строки соединения? - PullRequest
1 голос
/ 12 июля 2010
       System.Data.SqlClient.SqlConnection foo = new System.Data.SqlClient.SqlConnection();
       foo.ConnectionString = "Data Source=myServer;Integrated Security=SSPI;"; // exception thrown on this line

Если я объявил новый объект SqlConnection в своем коде .net, а затем установил в поле ConnectionString синтаксически неверную строку подключения, возникнет исключение.

Я несколько раз проверял, что если строка соединения семантически неверна (например, неверное имя сервера, неверный пароль), исключение не выдается.

Какую логику использует объект SqlConnection для проверки строки подключения в этой точке? Я безуспешно пытался ответить на этот вопрос, используя RedGate Reflector.

Ответы [ 2 ]

2 голосов
/ 12 июля 2010

Логика проверки находится во внутреннем одностроковом конструкторе класса SqlConnectionString, который попадает по довольно сложному маршруту.

SqlConnection.ConnectionString вызовы метода доступа set:

SqlConnection.ConnectionString_Set(string);              // Which calls ->
DbConnectionFactory.GetConnectionPoolGroup(string, ...); // Which calls ->
SqlConnectionFactory.CreateConnectionOptions(...);       // Which calls ->
SqlConnectionString(string) // Constructor - take a look at this for details

(Обратите внимание, что последний вызов не для однострочного конструктора для SqlConnection - он создает экземпляр другого класса , SqlConnectionString.)

0 голосов
/ 12 июля 2010

Строки подключения должны представлять собой простой список пар имя = значение, разделенных точками с запятой (;). Какое исключение вы получаете?

Если вы используете Reflector, чтобы попытаться выяснить, как анализируется ваша строка, вам может показаться, что проще взглянуть на System.Data.Common.DbConnectionStringBuilder. Собственный SQL Server SqlConnectionStringBuilder наследуется от этого класса.

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