您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

错误:“指定的LINQ表达式包含对与不同上下文关联的查询的引用”

错误:“指定的LINQ表达式包含对与不同上下文关联的查询的引用”

您将必须执行两个数据库查询

@H_419_3@var IDs =  (from a in db1.Table1 
            join b in db1.Table2 on a.Id equals b.Id 
            orderby a.Status 
            where b.Id == 1 && a.Status == "new" 
            select new a.Id).ToArray();

var query = from c in db2.Company
            join a in IDs on c.Id equals a.Id
            select new { Id = a.Id, CompanyId = c.CompanyId };

将@H_419_3@.ToArray()是至关重要的。它可以防止EF尝试执行组合查询(由于它使用两个不同的上下文,因此将失败)。@H_419_3@.AsEnumerable()如果您希望保持延迟加载,可以使用。

还有您的后续问题:

还有其他方法可以使LINQ查询更优化吗?也就是说,要在单个LINQ查询本身中执行操作?

为了使原始查询成功运行,它必须仅使用单个数据上下文,这意味着所有数据必须可从单个EDMX获取,而这又意味着单个连接字符串。有几种方法可以实现:

其他 2022/1/1 18:20:05 有466人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶