>

EntityFramework Core와 일대 다 관계를 사용하는 데 문제가 있습니다. 부모의 List 속성에서 자식 개체를 삭제하면이 자식 개체는 ChangeTracker에 의해 수정 된 것으로 표시됩니다 (삭제되지 않음). 그러나 컨텍스트에서 SaveChanges를 호출하면이 엔티티가 잘 삭제됩니다.

물론 엔티티의 플래그를 Deleted로 강제 설정할 수는 있지만 AutoMapper를 사용하여 엔티티를 업데이트하기 때문에 다른 솔루션을 선호합니다. AutoMapper 매핑 프로세스와 EntityFramework 컨텍스트를 혼합하고 싶지 않습니다.

var parent = new Parent();
var child = new Child();
parent.Childs.Add(child);
await context.SaveChangesAsync();
// removing the first child
parent.Childs.RemoveAt(0);  
// fails (Expected Deleted, got Modified)
Assert.Equal(EntityState.Deleted, context.Entry(child).State);


  • 답변 # 1

    이 동작에 대한 가장 좋은 설명은 EF Core 3.0에서 예상되는 주요 변경 사항 중 하나에 포함되어 있습니다. 이제 계단식 삭제가 기본적으로 즉시 수행됩니다.

    와이즈 비즈 와이즈 비즈  호출되었습니다.

         

    새로운 행동

         

    3.0부터 EF Core는 트리거링 조건이 감지되는 즉시 계단식 동작을 적용합니다. 예를 들어,

    Old behavior

    Before 3.0, EF Core applied cascading actions (deleting dependent entities when a required principal is deleted or when the relationship to a required principal is severed) did not happen until 호출  주체 엔터티를 삭제하면 추적 된 모든 필수 종속 항목도 즉시 삭제됨으로 설정됩니다.

         

         

    이 변경은 SaveChanges 이전에 어떤 엔티티가 삭제되는지 이해하는 것이 중요한 데이터 바인딩 및 감사 시나리오의 경험을 개선하기 위해 만들어졌습니다  호출됩니다.

    첫 번째 섹션에서는 현재 동작을 설명하고 마지막 섹션에서는 이러한 동작이 변경되는 이유에 대해 설명합니다.

    그렇다면 캐스케이드 옵션을 수동으로 적용하거나 여유가 있다면 EF Core 3.0을 기다려야합니다.

    context.Remove()

  • 이전 ios - Xcode 4에서 탭 사이를 빠르게 전환하는 방법은 무엇입니까
  • 다음 javascript - typescript 파일에서 js 함수를 호출하는 방법은 무엇입니까?