Платформа Объекта ADO.NET через несколько баз данных

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

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
6
задан Community 23 May 2017 в 11:55
поделиться

1 ответ

Во-первых, это официально не поддерживается.

Ответ, с которым Вы связываетесь для LINQ к SQL, просто использует способность сервера БД сделать неоднородные запросы. Я не вижу, почему это не работало бы на Платформу Объекта, также, поскольку это - функция сервера БД, не функция любой платформы. Другими словами, LINQ к SQL все еще имеет дело с соединением, как будто только один сервер базы данных был включен. Примите во внимание, однако, что не все серверы БД могут сделать это.

До того, что измениться в EDMX, ищите атрибут Схемы узла EntitySet в разделе "SSDL content".

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

Лучшая альтернатива должна была бы, вероятно, создать ПРЕДСТАВЛЕНИЕ в базе данных, которая сослалась на другую базу данных, и отобразите то представление вместо того, чтобы отобразить таблицу и другую базу данных непосредственно.

8
ответ дан 10 December 2019 в 02:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: