2017-12-22 3 views
0

Oracle 데이터베이스와 함께 Entity Framework를 사용합니다.AsNoTracking을 사용하면 Entity Framework에서 다른 결과를 반환합니다.

myLinqStatement.ToListAsync() 

과 같은 검색어를 만들면 결과적으로 잘못된 데이터가 반환됩니다. 내 진술을

myLinqStatement.AsNoTracking.ToListAsync() 

으로 변경하면 진술을 바꿀 수 있습니다.

또한 myLinqStatement.ToListAsync()에 의해 생성 된 원시 SQL 쿼리를 확인했습니다. 올바른 데이터를 얻기 때문에 생성 된 SQL 쿼리가 정확합니다.

매핑에 문제가 있습니까? 그리고 그것이 AsNoTracking과 함께 작동하는 이유는 무엇입니까?

감사합니다.

+0

에서 찾은 어떤 반환 AsNoTracking 단순히 인식 아니라고 코드에서 일부 부작용이 있다고 가정하게 언급으로

의미 ? 전혀 데이터가 없습니까? AsNoTracking없이'.ToListAsync'를 포함하는 전체 코드를 포함 할 수 있습니까? – Alexei

+0

데이터베이스 뷰의 PK 매핑이 잘못되었을 가능성이 큽니다. –

+0

결과 개수는 같지만 데이터가 다릅니다. 예 : 두 개의 결과에서 서로 다른 데이터를 가진 열/속성 "RES_NAME"이 있습니다. –

답변

2

AsNoTracking은 데이터를 컨텍스트에 첨부하지 않고 검색하므로 데이터를 변경하면 변경 사항을 추적해야하므로 EF가 다시 첨부하지 않으면 데이터에 적용한 변경 사항이 적용되지 않습니다.

제공 한 코드 조각은 컨텍스트를 만든 순간부터 전체 그림을 표시하지 않지만 myLinqStatement.ToListAsync()을 호출하기 전에 코드의 다른 부분이 데이터를 변경시킬 수 있습니까? 당신이 myLinqStatement.AsNoTracking.ToListAsync() 반환 예상 데이터, 나를 이렇게 그냥 당신의 dB "잘못된 데이터를"무엇을

관련 문제