C# 如何在一个LINQ请求中使用两个不同的数据上下文?

C# 如何在一个LINQ请求中使用两个不同的数据上下文?,c#,linq-to-sql,C#,Linq To Sql,谁能帮我下一步:如何在一个LINQ请求中使用两个不同的数据上下文 using (var db = new DataMapDataContext(Connection)) { using (var dbAdd = new DataMapDataContext(ConnectionAdd)) { return (from i in dbAdd.ITEMs

谁能帮我下一步:如何在一个LINQ请求中使用两个不同的数据上下文

using (var db = new DataMapDataContext(Connection))
        {    
            using (var dbAdd = new DataMapDataContext(ConnectionAdd))
            {
                return (from i in dbAdd.ITEMs
                        join p in db.U_OTT_PINs on i.ITEMNO equals p.PIN_CODE
                        where p.PIN_TYPE == Utils.PinItem
                        select ...
            }
        }
可能吗

更新:

我解决了我的问题,但没有使用不同的数据上下文:

        var listPinnedItems = new List<string>();
        using (var db = new DataMapDataContext(Connection))
        {
            listPinnedItems = (from lpi in db.U_OTT_PINs
                               where lpi.PIN_TYPE == Utils.PinItem
                               select lpi.PIN_CODE).ToList();
        }

        using (var dbAdd = new DataMapDataContext(ConnectionAdd))
        {
            return (from i in dbAdd.ITEMs
                    where listPinnedItems.Contains(i.ITEMNO) 
                    ...
var listPinnedItems=new List();
使用(var db=newdatamapdatacontext(连接))
{
listPinnedItems=(来自db.U\U OTT\U引脚中的lpi
其中lpi.PIN_TYPE==Utils.PinItem
选择lpi.PIN_CODE).ToList();
}
使用(var dbAdd=newdatamapdatacontext(ConnectionAdd))
{
返回(来自dbAdd.ITEMs中的i)
其中listPinnedItems.Contains(i.ITEMNO)
...

我不这么认为-这两个不同的上下文可能涉及同一数据库中的不同事务,甚至涉及到完全不同的数据库实例。它将如何构造SQL以跨这两个数据库工作


如果您能解释一下您正在尝试做什么,我们可能会为您提供更多帮助。

恐怕LINQ to SQL不适用于跨不同数据库查询。有关可能的解决方法,请参阅下文


可以使用两个DataContext,但不能同时跨这两个DataContext执行数据库查询。但是,您可以获取两个查询中涉及的数据,并使用通用linq语句(linq2objects)查询对象。

这是一个不应在未询问的情况下回答的问题“你想实现什么?”

两个数据上下文是指向同一个数据库还是指向不同的数据库

如果它们连接到同一个数据库,并且您有两个的唯一原因是您已经分离了实体,那么您可以只使用一个DC查询“属于”另一个datacontext的表。只需使用GetTable,L2S将根据类和成员属性解析映射


如果它们指向同一服务器上的不同数据库,并且您连接到其中一个数据库的登录名as有权从第二个数据库中读取数据,则您可以通过在.dbml文件中添加数据库名称作为前缀,将一个数据库中的表包含在基于另一个数据库的datacontext中。

不幸的是,这是两个完全不同的数据库ase实例。@misho:在这种情况下,我认为LINQ到SQL不能帮助您。重复问题?