栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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 };

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


还有您的后续问题:

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

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

  • 如果两个表都在同一个数据库中,请将它们都添加到一个EDMX中。
  • 如果它们在不同的数据库中,但在同一实例上,则在一个数据库中创建一个视图,该视图从另一个数据库的表中选择,然后将本地表和视图添加到单个EDMX中。
  • 如果它们在不同的实例/服务器上,则创建链接服务器,然后在链接服务器上创建表的视图,然后将本地表和视图添加到单个EDMX。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/568451.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号