实体框架 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;
    }

实体框架 4.3,使用联接

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

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

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