2010-04-17 2 views
1

누군가가 도와 줄 수 있기를 희망하는 EF 4.0에 문제가 있습니다. 나는 현재 최종 승계 방식으로 업데이트하려는 엔티티 (즉, 동시성 검사를 무시하고 제출 된 내용으로 db의 내용을 덮어 씁니다)가 있습니다. Entity Framework는 생성 된 sql의 where 절에있는 엔터티의 기본 키뿐만 아니라 모든 외래 키 필드도 포함합니다. 이것은 wins 의미론에서 마지막으로 진실하지 않고 업데이트 이전에 fk 필드의 값이 무엇인지 알 필요가 있거나 동시성 예외가 발생한다는 것을 의미하므로 성가시다.EF 강제 동시성 검사

엔티티의 탐색 속성뿐만 아니라 외래 키 필드를 포함시켜 단락이 발생할 수 있음을 알고 있습니다. 나는 아주 깨끗한 해결책이 아니므로 가능한 한 이것을 피하고 싶습니다.

이 동작을 재정의하는 다른 방법이 있는지 궁금한가요? 그것은 기능보다는 버그의 것 같습니다. 동시성 검사를 수행하면 동시성 검사를 수행하는 데 아무런 문제가 없습니다. 동시성 검사를 생략 할 수는 없지만 병행 성을 완전히 무시할 수는 없습니다. 이유가없는 유효한 시나리오가 많이 있습니다.

+0

안녕하세요, 당신이 세부 사항을 기쁘게 할 수? 예와 문제의 흐름에 대한 비트 (당신이 어떤 순서로 업데이트 된 것을 포함.) - 고마워요 . –

답변

0

나는 100 % 이것이 효과가 있겠지만, 나는 호기심이 많아서 해결책을 찾았을 것이라고 생각합니다.

변경할 수없는 필드에 [ConcurrencyCheck] 특성을 설정하면 (내 경우 ID (기본 키)를 사용함) 절대 변경되지 않으므로 동시성 예외가 트리거되지 않으므로 항목이 손상됩니다 그 문제를 해결합니다.

그것을 소용돌이를주고 참조하십시오.