EF를 사용하고 있으며 컨텍스트에서 ExecuteStoreCommand 함수를 통해 간단한 SQL 호출을 사용하여 테이블에서 행을 삭제 한 컨텍스트가 있습니다. 다른 이유로). 그것은 잘 작동하지만 상황은 어떤 일이 일어 났는지 알지 못합니다.SQL을 사용하여 개체 삭제 및 컨텍스트 업데이트
커밋이 영향을받는 행의 예상 개수를 제공하지 않기 때문에 일부 변경 내용을 커밋하려고 할 때 동일한 컨텍스트를 사용할 때 문제가 발생합니다.
내 질문은 내가 만든 변경 사항 (삭제 된 행)으로 컨텍스트를 업데이트하는 가장 좋은 방법입니다.
이미 삭제 된 개체를 가져 와서 상황에 맞는 새로 고침 기능에서 사용하려고 시도했지만 실제로 작동하지 않습니다. 삭제 된 개체를 가져올 때 null 참조를 얻었 기 때문일 수 있습니다. 이 삭제 된있는 개체를 모르기 때문에, 하나 나를 위해 작동하지 않습니다 ObjectStateManager.GetObjectStateEntries
을 사용하여 또한
_ctx.Refresh(RefreshMode.StoreWins, _ctx.Employees.FirstOrDefault(s => s.EmployeeId == employeeId));
.
에 내가 원하는하지 않습니다
- 컨텍스트를 다시 만듭니다.
- 필요한만큼 새로 고침하십시오.
- 게으른로드로 혼잡합니다.
삭제 한 후 컨텍스트를 다시 가져 오려고합니다. Btw은
var employee = ctx.ObjectStateManager.GetObjectStateEntries(~EntityState.Detached)
.Where(e => !e.IsRelationship)
.Select(e => e.Entity)
.OfType<Employee>()
.FirstOrDefault(e => e...);
if (employee != null) ctx.Detach(employee);
: - (당신은 당신이 수행하는 방법을 모르는 경우와 솔루션은 새로운 상황에 맞는 당신이 어떻게 든 삭제 된 개체를 식별해야합니다)
대단히 감사합니다. 나는 확실히 그것을 시도 할 것이다. 개체가 다른 개체의 목록에있는 경우에도 작동합니까? 직접 SQL 수정을 사용해서는 안되지만 성능 향상을 위해이 작업을 수행해야했습니다. –
이것은 내가 바라는대로 정확하게 작동하는 것 같습니다. 기존 회사 개체의 목록에 포함되어 있어도 올바른 직원 개체가 분리되는지 여부를 알려주시겠습니까? –
올바르게 분리하고 모든 관계에 참조를 포함하지 않도록 수정해야합니다. –