ODAC (Entity Framework 4)로 프로그래밍 할 때 안전하게 데이터를 업데이트하는 방법을 알고 싶습니다.
EF4 (ORACLE)에서 동시성을 처리하는 방법
void DescreaseInventory(int id, int qty){
var order = (from o in context.Orders where o.ID ==id select o).FirstOrDefault;
if(order != null){
if(((Order)order).Qty < qty)
throw new ApplicationException("Not Enough Inventory!!");
else
((Order)order).Qty -= qty;
}
else{
//...some code...
}
//will content.savechange
}
이 코드는 경쟁 조건이 발생하면 (검사 수량을 회피) 위험 할 것입니다. 이 작업을 올바르게 수행하는 방법을 누가 알 수 있습니까?
EDIT : 이제 EF4는 열을 추적 토큰으로 만드는 메커니즘을 제공합니다. 그러나 oracle DB (9i)에서 이러한 종류의 열을 어떻게 만들 수 있습니까? 적절한 컬럼 유형은 무엇입니까?
다음 단계에 대해 감사드립니다. DB에 트리거를 정의하면 트리거가 행에서 변경이 발생하면 타임 스탬프 열을 업데이트합니다. Entity 클래스의 상응하는 필드의 ** 동시성 모드 ** 속성을 ** Fixed **로 설정하십시오. – user622851
언급 한 유형을 사용하는 경우 트리거가 필요하지 않습니다. DB가 자동으로 그렇게 할 것입니다. –
고맙습니다. 한번 시도해 보시면 다시 게시됩니다. – user622851