我在使用服务层在EF中加入连接时遇到了一些问题。每当我尝试连接时,我都会收到以下错误:
“指定的LINQ表达式包含对与不同上下文关联的查询的引用”
我花了无数个小时试图解决这个问题。我见过的大多数文章都涉及从不同的上下文中加入实体集。但是,使用相同的DB会发生这种情况。我做错了什么?
示例代码:
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;
}
答案 0 :(得分:1)
这与数据库无关。它与 ObjectContext 的实例有关。
您在查询中引用了两个不同的存储库。我猜他们每个人都在包装一个EntityContext。这将导致此消息。
这也是一种反模式。我建议您为每个HTTP请求或每个WCF调用或任何工作单元打开一个EntityContext。