내가 얻을 :EF4 - 다른 객체에서 동일한 컨텍스트에서 동일한 테이블 행을 두 번 업데이트 할 수 없습니까? 나도 같은 맥락에서 업데이트하기위한 두 번 같은 테이블 행을받을 때
"는 ObjectStateManager의 다른 개체와 개체의 키 값의 충돌이 키 값이 이전에 고유한지 확인하기 때문에 계속할 수 없습니다 대해 AcceptChanges. AcceptChanges 호출 "
이 문제는 ChangeState 메서드에서 발생합니다.
나는이 단순화 될 수 있습니다 무엇 :
var obj1 = new test() { id = 1,name = "oiu"};
var dc = Context.Create();
dc.test.AddObject(obj1);
if (dc.test.Any(a => a.id == obj1.id))
dc.ObjectStateManager.GetObjectStateEntry(obj1).ChangeState(EntityState.Modified);
dc.SaveChanges();
//---- another iteration of the reading thread, another object, but same context:
var obj2 = new test() { id = 1, name = "ois" };
dc.test.AddObject(obj2);
if (dc.test.Any(a => a.id == obj2.id))
dc.ObjectStateManager.GetObjectStateEntry(obj2).ChangeState(EntityState.Modified);
dc.SaveChanges();
는 방법은 밖으로 또는 주변 있습니까?
Ladislav의 모습을 보여 주셔서 감사합니다. 실제로 나머지 테스트에서는 인스턴스를 모르고 GetObjectStateEntries를 통해 인스턴스를 찾을 수있었습니다. 이렇게하면 obj2를 사용하여 테이블 행을 수정할 수있는 유일한 옵션은 obj1을 먼저 분리하는 것입니다. 그렇다면 내 최고의 옵션은 항상 개체 첨부, ChangeState를 수정, SaveChanges 및 분리입니다. – Juliano