나는 매 10 초마다 실행되는 Windows 서비스를 가지고 있습니다 ... 실행될 때마다 몇 가지 테스트 데이터를 가져 와서 수정하고 EntityFramework를 사용하여 데이터베이스에 유지합니다. 나는 내가 다음과 같은 낙관적 동시성 예외가 변화 유지하려고 할 때마다 두 번째 실행에 -Entity Framework - 낙관적 인 동시성 문제
스토어 업데이트, 삽입 또는 삭제 문이 행의 예기치 않은 수의 영향 (0). 엔터티가로드 된 이후에 엔터티가 수정되거나 삭제되었을 수 있습니다. 새로 고침 ObjectStateManager 항목
실제로 DB에 기록하는 것이 아니라 10 초마다 기록을 업데이트하는 서비스가 있다는 것을 알고 있습니다. 동시성 예외를 일으키는 원인은 무엇입니까?
개체 그래프의 어딘가에있는 관련 엔티티가 두 번째 저장 작업 전에 수정되고 있다고 생각합니다. 내가 정말로하고있는 일은 새로운 개체 컨텍스트를 인스턴스화하고 동일한 컨텍스트를 사용하여 검색 한 일부 레코드에서 저장 작업을 호출하는 것입니다. 다음 코드는 --- 일
은 "행의 예기치 않은 수 (0)"을 나타냅니다var ctx = new blahEntities();
var profile = ctx.ProfileSet.Where(pr=>pr.FirstName.Contains("a")).FirstOrDefault();
profile.Address = "modified";
ctx.SaveChanges();
ctx.Refresh(RefreshMode.StoreWins,profile);
'SubmitChanges()'를 호출한다고 가정합니다. 매번'ObjectContext'의 새로운 복사본을 만들어 볼 수도 있습니다. –
예 "SubmitChanges"와 같은 EF 인 "SaveChanges"를 호출합니다. "ObjectContext의 새로운 사본 만들기는 서비스가 루프에 들어갈 때마다 새로운 objectcontext가 전달되기를 원한다는 의미입니까? 지금 당장은 객체 컨텍스트가 서비스가 시작될 때 한 번 만들어지고 수행을 위해 다시 사용됩니다 DB 작업. 기존 컨텍스트를 새로 고치는 방법이 있습니까? – Cranialsurge
엔티티를 연결/제거한 결과로 발생했기 때문에 엔티티를 어떻게 수정하는지 보여주는 코드를 게시 할 수 있습니까? – Nix