Это прямой подход, при котором я выбираю выходные данные для каждого столбца, где он равен одному, оставляя другие пустыми и объединяю их все.
SELECT
COLI_KEY, COLI_DAY, NULL AS COLI_WEE, NULL AS COLI_MON, NULL AS COLI_YEA
WHERE
COLI_DAY = 1
UNION
SELECT
COLI_KEY, NULL AS COLI_DAY, COLI_WEE, NULL AS COLI_MON, NULL AS COLI_YEA
WHERE
COLI_WEE = 1
UNION
SELECT
COLI_KEY, NULL AS COLI_DAY, NULL AS COLI_WEE, COLI_MON, NULL AS COLI_YEA
WHERE
COLI_MON = 1
UNION
SELECT
COLI_KEY, NULL AS COLI_DAY, NULL AS COLI_WEE, NULL AS COLI_MON, COLI_YEA
WHERE
COLI_YEA = 1
Во-первых, это официально не поддерживается.
Ответ, с которым Вы связываетесь для LINQ к SQL, просто использует способность сервера БД сделать неоднородные запросы. Я не вижу, почему это не работало бы на Платформу Объекта, также, поскольку это - функция сервера БД, не функция любой платформы. Другими словами, LINQ к SQL все еще имеет дело с соединением, как будто только один сервер базы данных был включен. Примите во внимание, однако, что не все серверы БД могут сделать это.
До того, что измениться в EDMX, ищите атрибут Схемы узла EntitySet в разделе "SSDL content".
Один протест об этой технике состоит в том, что при обновлении модели от базы данных модель хранения вытерта и заменена с нуля. Таким образом, необходимо было бы повторно применить эти изменения. Это не проблема в LINQ к SQL, потому что LINQ к SQL не поддерживает автоматизированные обновления от базы данных вообще.
Лучшая альтернатива должна была бы, вероятно, создать ПРЕДСТАВЛЕНИЕ в базе данных, которая сослалась на другую базу данных, и отобразите то представление вместо того, чтобы отобразить таблицу и другую базу данных непосредственно.