Существуют ли какие-либо классы (или методы), которые могут создавать отформатированную строку соединения, учитывая имя поставщика и идентификатор пользователя, пароль и т. Д.? - PullRequest
1 голос
/ 10 октября 2008

Например.

ConnectionDetails cd = new ConnectionDetails ();
cd.ProviderName = "System.Data.OleDb";
cd.DataSource = "serverAddress";
cd.Catalog = "database";
cd.UserId = "userId";
cd.Password = "password";

string connectionString = cs.CreateConnectionString();
// Should return:
// "Provider=SQLOLEDB;Data Source=serverAddress;Initial Catalog=database;User Id=userId;Password=password;"

Я бы написал свой собственный класс, но я не уверен, как программным образом получить свойство поставщика строки подключения (в данном примере SQLOLEDB) из инвариантного имени поставщика БД (System.Data.OleDb).

Edit:

Вы можете сделать

DbProviderFactories.GetFactory("System.Data.OleDB").CreateConnectionStringBuilder()

Но DBConnectionStringBuilder, который возвращается, все еще не знает своего свойства поставщика строки соединения, даже если в этом случае у его производного класса есть свойство "Provider".

Ответы [ 2 ]

2 голосов
/ 10 октября 2008

Самое близкое, что я знаю, это DbConnectionStringBuilder .

Поскольку свойства, требуемые разными поставщиками, различаются, он использует ассоциативный массив (набор значений имени), а не фиксированные свойства.

Итак, ваш пример будет выглядеть как

DbConnectionStringBuilder csb = new DbConnectionStringBuilder();
csb["ProviderName"] = "System.Data.OleDb";
csb["DataSource"] = "serverAddress";
csb["Catalog"] = "database";
csb["UserId"] = "userId";
csb["Password"] = "password";

string connectionString = csb.ConnectionString;
0 голосов
/ 11 октября 2008

Существует класс OleDbConnectionStringBuilder, который создаст для вас строку подключения.

Но похоже, что вы пытаетесь заставить его сгенерировать имя провайдера для вас, и я не думаю, что это действительно работает таким образом. Так как имя провайдера может различаться, это то, что вам нужно будет предоставить, чтобы сообщить соединению, что делать. Какой бы механизм вы не использовали для выбора соединения с базой данных (или для управления методами фабрики соединений с базой данных, если вы идете по этому маршруту), ему также нужно будет указать имя провайдера.

...