Если я вас правильно понял, то вам нужно динамически подключаться к разным базам данных без изменения вашего кода.Предположим, у вас есть 2 клиента Customer1 и Customer2.Для этих клиентов вы создали 2 базы данных с именами Database_Customer1 и Database_Customer2.
Сопоставьте структуру сущностей с любой базой данных Клиента с именем CustomerDbSpecificEntities.
Теперь вам нужно добавить следующие строки подключения в ваш.config file.
<add name="Database_Customer1_Entities" connectionString="metadata=res://*/CustomerDbSpecific.csdl|res://*/CustomerDbSpecific.ssdl|res://*/CustomerDbSpecific.msl;provider=System.Data.SqlClient;provider connection string="Data Source=Customer1ServerName;Initial Catalog=DatabaseCustomer1;Persist Security Info=True;User ID=userid;Password=password;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
<add name="Database_Customer2_Entities" connectionString="metadata=res://*/CustomerDbSpecific.csdl|res://*/CustomerDbSpecific.ssdl|res://*/CustomerDbSpecific.msl;provider=System.Data.SqlClient;provider connection string="Data Source=Customer2ServerName;Initial Catalog=DatabaseCustomer2;Persist Security Info=True;User ID=userid;Password=password;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
В вашем коде на уровне доступа к данным
String ConnectionStringName = MembershipDBProvider.GetConnectionStringNameForCustomer(CustomerName);
using (CustomerDbSpecificEntities context = new CustomerDbSpecificEntities("Name=" + ConnectionStringName))
{
//use context here
}
Создайте таблицу (CustomerDbConnection) в общей базе данных (базе данных членства) для хранения сопоставления имени клиента иего имя строки подключения к базе данных.
'GetConnectionStringNameForCustomer (CustomerName)' выполняет поиск в таблице CustomerDbConnection и возвращает имя строки подключения для данного клиента.Который используется для установления соединения с базой данных конкретного клиента.
Теперь, если в будущем у вас будет новый клиент, необходимо внести следующие изменения: 1. Добавить новую строку в CustomerDbConnection.2. Добавьте новую строку подключения в файл .config
Пожалуйста, дайте мне знать, если вам нужно более подробно об этом.