1

サービスレイヤーを使用して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;
    }
4

1 に答える 1

1

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

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

アンチパターンでもあります。HTTPリクエストごと、WCF呼び出しごと、または作業単位ごとに1つのEntityContextを開くことをお勧めします。

于 2012-04-13T22:33:11.657 に答える