2017-12-22 16 views
0

Oracleデータベースと組み合わせてEntity Frameworkを使用します。Entity FrameworkがAsNoTrackingで異なる結果を返す

myLinqStatement.ToListAsync() 

のようなクエリを作成した場合、結果として間違ったデータが返されます。明細書を

に変更した場合
myLinqStatement.AsNoTracking.ToListAsync() 

私は正しいデータを取得します。

myLinqStatement.ToListAsync()によって生成されたネイティブSQLクエリも確認しました。私は正しいデータを取得するため、生成されたSQLクエリは正しいです。

マッピングに問題がありますか?そして、なぜそれはAsNoTrackingと一緒に働いていますか?

ありがとうございます!

+0

あなたのデシベルで見つかったものを返します?データがまったくありませんか? 'AsNoTracking'を使わずに' .ToListAsync'を含むコード全体を含めることはできますか? – Alexei

+0

データベースビューのPKマッピングが正しくない可能性があります。 –

+0

結果のカウントは同じですが、データは異なります。例:2つの結果に異なるデータを持つ列/プロパティ "RES_NAME"があります –

答えて

2

AsNoTrackingは、データをコンテキストに添付せずに取得するため、データを適用して変更を適用しても、変更を追跡する必要があることがわかります。

あなたが提供したコードスニペットは、コンテキストが作成された瞬間から画像全体を表示しませんが、myLinqStatement.ToListAsync()に電話する前にコードの他の部分がデータを変更する可能性がありますか?

あなたはmyLinqStatement.AsNoTracking.ToListAsync()リターンが期待されるというデータを言及したよう、私はAsNoTrackingは、単に認識していないことを、あなたのコード内のいくつかの副作用があることが前提となりますので、ちょうどそれが「間違ったデータが」どういう意味

関連する問題