Интерфейс для доступа к равным базам данных - PullRequest
0 голосов
/ 22 июля 2010

У меня есть несколько баз данных, которые содержат одинаковые базовые таблицы с одинаковым дизайном.Теперь мне нужно иметь доступ к базовой таблице из любой из этих баз данных.

Есть ли способ создать общий интерфейс, который все еще может использовать возможности Linq2Sql?Я думал, что у меня будет фабрика, которая создаст контекст данных для этой выбранной базы данных, который я мог бы затем запросить:

string university = "SomeUniversity";
var database = UniversityDataContextFactory.Get(university);
var user = database.Users.Where(u => u.Id== id).First();

Однако для этого потребуется контексты данных, возвращаемые из отдельных баз данных, для реализацииобщий интерфейс и очень возможно также для обмена классами данных.

1 Ответ

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

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

Здесь все становится немного веселее.Если вы явно создаете контекст данных - как в примере с фабрикой - тогда проблема не возникает, если у вас есть средство для предоставления / создания подходящей строки подключения, поскольку есть конструктор для контекста данных, который принимает строку подключения какпараметр.Однако, если вы неявно создаете его (в результате чего-то вроде динамических данных), то я не уверен, что вам нужно сделать (я имел дело с этим для каждого экземпляра приложения, но не для нескольких соединений вотдельное приложение).

Необходимо помнить, что строка подключения к данным в вашем .config является стандартной, но не обязательно единственной строкой подключения, которую можно использовать с контекстом данных.

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