2010-07-22 3 views
0

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

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

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

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

+0

Вы будете обновлять данные в таблицах с помощью Linq2Sql? –

+0

Да, я это сделаю. Я буду использовать Linq, как и в любом другом месте. –

ответ

0

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

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

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

Смежные вопросы