1

我在使用我的服务层加入 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;
    }
4

1 回答 1

1

这与数据库无关。它与ObjectContext 的实例有关

您在查询中引用了两个不同的存储库。我猜他们每个人都在包装一个EntityContext。这将导致此消息。

这也是一种反模式。我建议您为每个 HTTP 请求或每个 WCF 调用或任何您的工作单元打开一个 EntityContext。

于 2012-04-13T22:33:11.657 回答