实体框架 4.3,使用联接
本文关键字:框架 实体 | 更新日期: 2023-09-27 18:31:16
我在使用我的服务层在 EF 中进行连接时遇到了一些问题。每当我尝试进行连接时,都会收到以下错误:
"指定的 LINQ 表达式包含对与不同上下文关联的查询的引用"
我花了无数个小时试图弄清楚这一点。我看到的大多数文章都涉及从不同上下文中联接实体集。但是,这发生在我使用相同的数据库上。我做错了什么?
示例代码:
public virtual IList<ProductVariantAttribute> GetProductVariantAttributes(int ProductID)
{
var query = from pva in _productVariantAttributeRepository.Table
join b in _productAttributeRepository.Table on pva.ProductAttributeID equals b.ProductAttributeID
where pva.ProductID == ProductID
select pva;
var productVariantAttributes = query.ToList();
return productVariantAttributes;
}
这与数据库无关。它与ObjectContext的实例有关。
您在查询中引用了两个不同的存储库。我猜他们每个人都在包装一个实体上下文。这将导致此消息。
它也是一种反模式。我建议您为每个 HTTP 请求或每个 WCF 调用或任何工作单元只打开一个 EntityContext。