0

Entity Frameworkを使用していますが、アプリケーション全体のエンティティをキャッシュしたため、エンティティではなくリストになりました。

私がキャッシュしたオブジェクトの2つは、ProductsとStoresです。Productにはストアがあります。テーブルでは、それらはStoreIdによってリンクされていますが、EFを使用しているため、ProductにStoreエンティティを含めることもできます。

それらが独立して使用されるという理由だけで、それらを一緒にキャッシュすることはしません。私がやりたいのは、ある時点でそれらを結合することです。そのため、Productオブジェクトを副選択してから、Storesオブジェクトを結合してStoresにデータを入力したいと思うかもしれません。

linqを使用して2つのリストを結合する最も効率的な方法です-もしそうなら、最も効率的な構文ですか、それともリストをエンティティに戻すより良い方法がありますか?

4

2 に答える 2

2

リストをエンティティに戻すより良い方法はありますか

これはあなたがやろうとしていることではないので、これは少し誤解を招く恐れがあります。エンティティである製品/ストアのリストをプルダウンします-それらを変換する必要はありません(リストに保存している場合でも)。

私があなたを正しく理解しているなら、あなたがしたいことは基本的にそれぞれをキャッシュされたエンティティからProduct適切にマップすることです(エンティティのプロパティにStoreアクセスしてDBに戻るのを節約するため)。私はあなたがする必要があるのはこれを全体にマッピングすることだけだとかなり確信しているので、次のようなものです:StoreProduct

foreach (var product in cachedProducts)
{
    product.Store = cachedStores.SingleOrDefault(s => s.Id == product.StoreId);
}
于 2012-08-21T11:02:41.560 に答える
1

エンティティは基盤となるデータベースコンテキストを介して接続されているため、このコンテキストからエンティティを削除すると、後でそれらを結合したり、コンテキストをアタッチせずに保存したりすることができなくなります。

最も効率的な設計は、EFのIQueryable構文を使用して、必要なときにいつでもそれらを取得し、データベースコンテキストに必要な/可能なキャッシュを実行させることです。

于 2012-08-21T10:56:35.567 に答える