当前位置:  开发笔记 > 数据库 > 正文

LINQ跨多个数据库

如何解决《LINQ跨多个数据库》经验,为你挑选了2个好方法。

我有两个表需要通过LINQ加入,但它们存在于不同的数据库中.现在我正在返回一个表的结果,然后循环并检索另一个表的结果,你可以猜测它并不是非常有效.有没有办法让它们成为一个LINQ语句?有没有其他方法来构建它以避免循环?我只是在寻找想法,万一我忽略了什么.

请注意,我无法更改数据库,即我无法在引用另一个的视图中创建视图.我还没有尝试过的东西是在引用两个表的第三个数据库中创建视图.欢迎任何想法.



1> Ryan Lundy..:

可以做到这一点,甚至可以跨越服务器,只要你可以从其他访问一个数据库.也就是说,如果可以针对ServerA编写SQL语句.访问ServerB的DatabaseA.DatabaseB.架构.TableWhatever,那么你可以在LINQ中做同样的事情.

为此,您需要手动编辑.dbml文件.您可以像这样轻松地在VS 2008中执行此操作:右键单击,选择打开方式...,然后选择XML编辑器.

查看Connection元素,它应该位于文件的顶部.您需要做的是为不在该连接字符串指向的数据库中的表提供显式数据库名称(和服务器名称,如果不同).

.dbml中Table元素的开始标记如下所示:

您需要做的是,对于不在连接字符串数据库中的任何表,将Name属性更改为以下类似之一:

如果遇到问题,请确保可以从原始数据库(或服务器)真正访问其他数据库(或服务器).在SQL Server Management Studio中,尝试编写针对原始数据库运行的小型SQL语句,其执行以下操作:

SELECT SomeColumn
FROM OtherServer.OtherDatabase.dbo.SomeTable

如果不起作用,请确保您拥有可以访问具有相同密码的两个数据库的用户或登录.当然,它应该与.dbml的连接字符串中使用的相同.


您也可以在O/R-Designer中更改源.只需打开表的属性,查找"source",其中包含"dbo.Customers",可以更改为包含数据库名称"SomeOtherDatabase.dbo.Customers".所以这不是黑客,改变来源是完美的.

2> user32415..:

在数据库中创建一个proc/view.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有