낙천적 동시성 검사를 구현하려고합니다. 필자는 일반적인 저장소와 작업 단위 패턴을 사용합니다.타임 스탬프를 무시하는 Entity Framework 엔티티 업데이트
데이터를 업데이트 할 때마다 자동으로 값이 증가하는 Timestamp-attributed 속성 (바이트 배열로)을 도입했습니다 (데이터베이스 관리, 이것이해야 할 일임).
VM을 오토 데스크를 사용하여 실제 모델에 매핑하여 뷰 모델에서 업데이트 된 값을로드합니다. 결과적으로 모든 해당 필드가 설정된 올바른 유형의 엔티티 (타임 스탬프 포함)의 새로운 (분리 된) 인스턴스가 생성됩니다.
업데이트 자체는
i_oEntity가 automapped 엔터티로 되i_oOldEntity = m_oDbSet.Find(i_oEntity.MaterialId)
context.Entry(i_oOldEntity).CurrentValues.SetValues(i_oEntity)
context.SaveChanges()
같이 수행된다.
이렇게하면 값 자체가 올바르게 업데이트되지만 뷰 모델에서 오는 타임 스탬프 값은 완전히 무시됩니다. 결과 SQL 코드는 WHERE 절에서 최신 rowversion 값을 사용합니다.
간단히 말해, viewmodel-timestamp 값을 EF의 WHERE 절에서 사용하려면 어떻게해야합니까?