두 개의 관련 테이블, 즉 Object
및 State
으로 구성된보기 ObjectDisplay
이 있습니다. State
은 Object
의 상태를 나타내고,보기는 각 Object
에 대해 가장 최근의 State
의 일부 세부 사항을 가져옵니다.뷰는 기본 테이블의 데이터 변경 사항을 즉시 반영합니까?
이 정보를 표시하는 페이지에서 사용자는 몇 가지 설명을 입력하여 새로운 State
을 생성 할 수 있습니다. 새로운 State
을 만든 후 즉시 Object
을 ObjectDisplay
에서 가져 와서 다시 보내서 부분보기로 삭제하고 페이지의 눈금에서 Object
을 바꿉니다.
// Add new State.
db.States.Add(new State()
{
ObjectId = objectId,
Comments = comments,
UserName = username
});
// Save the changes (executes all of the above).
db.SaveChanges();
// Return the new Object information.
return db.Objects.Single(c => c.ObjectId == objectId);
내 DB 추적에 따르면, Single
호출은 SaveChanges
호출 후 약 70 밀리 발생하고 동일한 SPID에서 발생합니다.
문제의 현재 : 데이터베이스의 기본값은 나는 RecordDate
입니다. State
에서 GETUTCDATE()
으로 - 나는 스스로 날짜를 제공하지 않습니다. 내가보고있는 것은 이 State
의 이전 State
이고 의 Comments
이 이전 State
인 의 RecordDate
이 반환된다는 것입니다.Object
이 (가) 이전 State
님의 정보를 가지고있는 것을보고 있습니다. 페이지를 새로 고치면 모든 올바른 정보가 있지만 데이터베이스/EF의 초기 호출에서 잘못된 정보가 반환됩니다.
그래서 ... 무엇이 잘못되었을 수 있습니까? 보기가 충분히 빠르게 업데이트되지 않을 수 있습니까? EF에서 뭔가 진행될 수 있습니까? 나는 어디에서부터 시작해야할지 정말로 모른다.
? 데이터를 변경하는 쿼리와 다른 세션에서 뷰가 호출되고 있습니까? – Oded
@Oded : 추적에서 '감사 로그인'줄에는 '트랜잭션 격리 수준 설정 완료'가 있습니다. 둘 다 동일한 SPID에서 수행됩니다. – zimdanen