C# 如何在一个LINQ请求中使用两个不同的数据上下文?
谁能帮我下一步:如何在一个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
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不能帮助您。重复问题?