跨多个数据库的ADO.Net实体框架

Sam*_*Sam 6 linq-to-entities

在Linq2Sql中,只需将数据库名称添加到源,即可将数据上下文连接到多个数据库.

有没有办法在Linq 2 Entities/ADO.net Entity Framework中实现这一目标?可以将数据库名称添加到表名中吗?

我试图将'Schema'从dbo更改为MyDatabase.dbo,但EF将其封装成

SELECT FROM [MyDatabase.dbo].[MyTable]
Run Code Online (Sandbox Code Playgroud)

将"架构"更改为"我的数据库"的诡计.[dbo'将被转义为

SELECT FROM [MyDatabase]].[dbo].[MyTable]
Run Code Online (Sandbox Code Playgroud)

(记住这两个]].)

Cra*_*ntz 8

首先,这不是官方支持的.

您链接到LINQ to SQL的答案只是使用数据库服务器执行异构查询的能力.我不明白为什么这对于实体框架也不起作用,因为它是一个数据库服务器功能,而不是任何一个框架的功能.换句话说,LINQ to SQL仍在处理连接,就像只涉及一个数据库服务器一样.但请记住,并非所有数据库服务器都可以执行此操作.

至于在EDMX中要更改的内容,请在"SSDL内容"部分中查找EntitySet节点的Schema属性.

关于这种技术的一个警告是,当您从数据库更新模型时,存储模型将被清除并从头开始替换.因此,您需要重新应用这些更改.这在LINQ to SQL中不是问题,因为LINQ to SQL根本不支持从数据库进行自动更新.

一个更好的选择可能是在数据库中创建一个VIEW,它引用另一个数据库并映射该视图,而不是直接映射表和另一个数据库.