Asp.net MVC3 с LINQ to SQL на нескольких идентичных таблицах - PullRequest
0 голосов
/ 19 июля 2011

Я успешно извлек данные из уже заполненной таблицы действующей базы данных, используя mvc3 и linq 2 SQL.Таблица определена в DataClasses1.dbml.

Теперь мне нужно извлечь данные из других таблиц с одинаковой структурой DataClasses1, но из разных баз данных на одном и том же SQL Server (DB1.Customers DB2.Customers ecc)и отобразить их сгруппированные по имени базы данных.

1) Как я могу это сделать, не создавая N DataClassesN.dbml?Я предполагаю, что, поскольку это та же самая структура таблиц, я могу избежать этого.

2) (Необязательно): Как я могу автоматически получать данные также из таблиц новых созданных баз данных?

3) (Нерелевантный): Как я могу определить строго тип представления?Кажется, я могу сделать это с помощью EF, но я не могу сделать это с помощью LINQ 2. SQL.

  • Я уже думал о создании представления базы данных со всеми таблицами клиентов, но, похоже, этослишком тяжелое представление!

  • У меня есть запрос, который возвращает все имена баз данных (выберите имя из master..syttables), это полезно?

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 19 июля 2011

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

var dc = new DataClasses1(db1connectionstring);
// Do your display of database 1 data
var dc2 = new DataClasses1(db2connectionstring);
// Do your display of database 2 data

Я понятия не имею, что вы подразумеваете под # 2.Данные не извлекаются сами.

0 голосов
/ 19 июля 2011

Очевидно, что вы не можете объединить результаты из двух баз данных в SQL, поэтому вам, вероятно, придется использовать 2 запроса (по одному на каждую базу данных), при этом один из них выбирает новый объект другой базы данных, а затем объединяет результаты впамять, используя LINQ впоследствии.Таким образом, один запрос возвращает DB1.EntityName, а другой возвращает DB2.EntityName, но с выбором, сопоставляющим это новым сущностям DB1.EntityName, а затем соединяет их.Это не очень приятное решение, но это лучшее, что я могу придумать, не задумываясь.

Если вы просто хотите, чтобы каждая база данных имела набор результатов каждый, тогда, конечно, вы можете просто вернуть 2 набора результатов.Дайте мне знать, если я неправильно понял ваш вопрос.

...