0

私は UoW を使用しているので、問題は 2 つのクエリのコンテキストが同じであることにあると思います。

たとえば、次のようにします。

IEnumerable listProjects = ((IQueryableUnitOfWork)UnitOfWork)
.CreateSet<Project>().Include(p=>p.Users).AsEnumerable();

そして、私は:

IEnumerable listProjectsWithoutIncludes = ((IQueryableUnitOfWork)UnitOfWork)
.CreateSet<Project>().AsEnumerable();

オブジェクトlistProjectsWithoutIncludesには、インクルードを使用してクエリを実行したかのように、プロジェクトのユーザーが格納されます。

誰かがそれを防ぐ方法を知っていますか? ありがとう。

4

1 に答える 1

0

私のコメントに続いて... Unit Of Workは、その性質上、すべてをパッケージまたはトランザクションとしてグループ化します。あなたの例では、アクションを分離してお互いを知らないようにしたい場合は、2 つの異なる作業単位が必要になります。

1 つの作業単位を 1 つのトランザクションと考えてください。たとえば、5 つのストーンを持っていて 2 つ取り去った場合、そのトランザクション中に毎回 3 つのストーンが得られることになります。ただし、別の作業単位がある場合は、最初のトランザクションの一部ではないため、(コミットされるまでなど) 常に 5 つのストーンが表示されます。

それが理にかなっていることを願っていますか?作業単位 = トランザクション = 作業グループ。その 1 つのトランザクションでアクションを一緒にする意味がない場合は、新しい作業単位を作成します。

于 2013-05-28T11:23:44.873 に答える