변경 사항을 저장하기 전에 컨텍스트에서 일부 엔티티를 제외하는 방법을 알려줄 수 있습니까?SaveChanges에서 엔티티 제외
예를 들어 2 개의 엔티티 작업 및 사용자가 있으며 사용자 만 저장 하시겠습니까?
변경 사항을 저장하기 전에 컨텍스트에서 일부 엔티티를 제외하는 방법을 알려줄 수 있습니까?SaveChanges에서 엔티티 제외
예를 들어 2 개의 엔티티 작업 및 사용자가 있으며 사용자 만 저장 하시겠습니까?
조치를 변경 했으므로 수정하지 않으려는 경우 컨텍스트에서 분리하거나 세트에서 수정할 수 있습니다 그것은 변하지 않은 것처럼 (즉, 해킹과 같다).
분리 엔티티 :
context.Detach(action);
설정 상태 변경에 :
context.ObjectStateManager.ChangeObjectState(action, EntityState.Unchanged);
당신은 또한 액션과 사용자 사이의 관계를 변경 한 경우 당신은 또한 호출하여 관계의 상태를 reaset해야한다는 점에 유의 ObjectStateManager.ChangeRelationshipState
.
어쨌든 이런 상황이 발생해서는 안되는 문제가 발생했습니다. 저장하려는 엔티티 만 수정해야합니다. 어떤 이유로 든 일부만 수정할 필요가있는 경우 엔 clonning 엔티티에 대한 접근 방식을 수정하고 다른 상황에서 수정하십시오. 컨텍스트는 작업 단위입니다. 동일한 비즈니스 트랜잭션의 일부인 엔티티 만 수정해야합니다.
좋아, 고마워, 복제로 해결 했어. 당신은이 해결책이 일어나지 말아야한다고 말했을 때, 나는 잘못된 것을하고 있었지만 복제가 도움이되었습니다. – buda
실제로 가장 좋은 옵션은 실제로 엔티티를 변경하지 않는 한 엔티티를 수정하지 않는 것입니다. 그러나 당신은 그들의 상태를 바꿀 수 있습니다. Programming Entity Framework에는 이에 대한 자세한 내용이 있습니다.
엔티티의 사본을 작성하여 해결합니다. 모든 어린이 (딥 복사)의 액션을 수행하고 사본을 변경했을 때 사본을 작성했습니다.
당신은 "변경되지 않은"는 ObjectStateManager
같은 사용하기 (귀하의 경우 유형 Action
의) 변경된 오브젝트의 상태를 변경할 수 있습니다
context.ObjectStateManager.ChangeObjectState(actionObject, EntityState.Unchanged);
나는이 도움이 :)
PS 희망 :
var modifiedActions = context.Actions.Where(a=>a.EntityState!=EntityState.Unchanged);
'User' 엔티티 만 저장하고 첨부 된 'Action' 엔티티는 변경 했습니까? 그렇지 않으면 걱정할 필요가 없습니다. 아무 것도 구원을 얻지 못할 것입니다. 이 엔티티를 수정하는 방법에 대한 몇 가지 코드를 게시 할 수 있습니까? –
두 항목을 모두 변경했지만 사용자 만 저장하려고합니다. – buda