2012-04-13 23 views
1

私のサービスレイヤーを使用してEFで結合を行う際に問題が発生しています。私は参加をしようとするたびに、私は次のエラーを取得する:Entity Framework 4.3(joinを使用)

指定された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

この記事では、コンテキストインスタンスの可能性が最も高く、リポジトリパターンがあると思われるため、各リポジトリにはそれぞれ独自のコンテキストインスタンスがあります。 – meandmycode

答えて

1

これは、データベースとは何の関係もありません。 ObjectContextのインスタンスとはすべて関係があります。

クエリで2つの異なるリポジトリを参照しています。私は、それぞれがEntityContextをラッピングしていると思います。これにより、このメッセージが表示されます。

また、アンチパターンです。 HTTPリクエストまたはWCF呼び出しごとにEntityContextを1つだけ開くことをお勧めします。

+1

ありがとうございました、私はDIを使用してコンテキストインターフェイスを登録しています。Dependency Registrarに.InstancePerHttpRequest()属性を追加するのを忘れました。 – Dereck

関連する問題