在Linq2Sql中,只需将数据库名称添加到源,即可将数据上下文连接到多个数据库.
有没有办法在Linq 2 Entities/ADO.net Entity Framework中实现这一目标?可以将数据库名称添加到表名中吗?
我试图将'Schema'从dbo更改为MyDatabase.dbo,但EF将其封装成
SELECT FROM [MyDatabase.dbo].[MyTable]
将"架构"更改为"我的数据库"的诡计.[dbo'将被转义为
SELECT FROM [MyDatabase]].[dbo].[MyTable]
(记住这两个]]
.)
首先,这不是官方支持的.
您链接到LINQ to SQL的答案只是使用数据库服务器执行异构查询的能力.我不明白为什么这对于实体框架也不起作用,因为它是一个数据库服务器功能,而不是任何一个框架的功能.换句话说,LINQ to SQL仍在处理连接,就像只涉及一个数据库服务器一样.但请记住,并非所有数据库服务器都可以执行此操作.
至于在EDMX中要更改的内容,请在"SSDL内容"部分中查找EntitySet节点的Schema属性.
关于这种技术的一个警告是,当您从数据库更新模型时,存储模型将被清除并从头开始替换.因此,您需要重新应用这些更改.这在LINQ to SQL中不是问题,因为LINQ to SQL根本不支持从数据库进行自动更新.
一个更好的选择可能是在数据库中创建一个VIEW,它引用另一个数据库并映射该视图,而不是直接映射表和另一个数据库.