Pergunta

Em Linq2Sql você pode conectar um contexto de dados para vários bancos de dados apenas adicionando o nome de banco de dados para a fonte .

Existe uma maneira de conseguir isso em Linq 2 entidades / ADO.net Entity Framework? Pode o nome do banco de dados em algum lugar ser adicionado ao nome da tabela?

Eu tentei mudar o 'esquema' de DBO para MyDatabase.dbo , mas a EF encapsula isso em

SELECT FROM [MyDatabase.dbo].[MyTable]

Trickery como mudar 'esquema' para 'MyDatabase]. [Dbo' será escapou para

SELECT FROM [MyDatabase]].[dbo].[MyTable]

(Mente os dois ]].)

Foi útil?

Solução

Em primeiro lugar, isso não é suportado oficialmente .

A resposta que você conectar-se a para LINQ to SQL é apenas usando a capacidade do servidor de DB para fazer consultas heterogêneas. Eu não vejo por que não iria trabalhar para o Entity Framework, também, como é um recurso de servidor de DB, não é uma característica de qualquer quadro. Em outras palavras, LINQ to SQL ainda está lidando com a conexão como se apenas um servidor de banco de dados estavam envolvidos. Tenha em mente, no entanto, que nem todos os servidores DB pode fazer isso.

Tanto quanto o que a mudança na EDMX, olhar para o atributo do esquema do nó EntitySet na seção "SSDL conteúdo".

Uma ressalva sobre esta técnica é que quando você atualizar seu modelo de banco de dados, o modelo de armazenamento é eliminado, substituído a partir do zero. Então, você precisa reaplicar essas mudanças. Este não é um problema em LINQ to SQL, porque LINQ to SQL não suporta atualizações automáticas do banco de dados.

A melhor alternativa seria provavelmente para criar uma exibição no banco de dados que referenciou o outro banco de dados e mapear essa vista em vez de mapear a mesa e outro banco de dados diretamente.

Outras dicas

Se o seu banco de dados suporta SQL sinônimos, você pode mesclar as duas definições de banco de dados em um arquivo. Eu fiz isso recentemente e publicado como eu fiz isso aqui se você estiver interessado.

Basicamente você criar sinônimos no databaseA apontando para DatabaseB, crie um arquivo edmx separado para cada banco de dados e, em seguida, executar um script para mesclar os arquivos EDMX em um único arquivo que se conecta a qualquer banco de dados tem a configuração sinônimos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top