实体框架4.3,使用连接

时间:2012-04-13 22:12:19

标签: c# entity-framework-4.3

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

1 个答案:

答案 0 :(得分:1)

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

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

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