Entity Framework의 엔터티 삭제 방법 비교
Entity Framework는 데이터베이스에서 항목을 삭제하는 두 가지 주요 방법인 EntityCollection.Remove()
및 ObjectContext.DeleteObject()
을 제공합니다. 둘 다 데이터베이스에서 항목을 삭제하지만 기능과 사용법은 다릅니다.
EntityCollection.Remove()
EntityCollection.Remove()
상위 엔터티와 하위 엔터티 간의 관계를 삭제합니다. 이 메서드는 컨텍스트에서 관계를 삭제된 것으로 표시합니다. 하위 엔터티 자체가 삭제된 경우 SaveChanges
이 호출될 때 취해지는 정확한 조치는 관계의 성격에 따라 달라집니다.
DeleteObject()
을 호출하는 등의 추가 작업이 필요합니다. 그렇지 않으면 참조 제약 조건 위반 예외가 발생합니다. SaveChanges
을 호출하면 데이터베이스에 SQL DELETE 문이 전송되어 참조 제약 조건이 위반되지 않으면 하위 엔터티가 삭제됩니다. ObjectContext.DeleteObject()
ObjectContext.DeleteObject()
컨텍스트에서 항목을 삭제된 것으로 표시합니다. 이렇게 하면 엔터티의 EntityState
이 Deleted
로 설정되어 관계가 삭제된 것으로 표시되었지만 자신은 삭제되지 않은 다른 엔터티와 구별됩니다. DeleteObject()
를 사용한 후 SaveChanges
을 호출하면 참조 제약 조건을 위반하지 않는 한 데이터베이스에서 엔터티를 삭제하는 SQL DELETE 문이 트리거됩니다.
반환값
EntityCollection.Remove()
은 관계가 성공적으로 삭제되었는지 여부를 나타내는 부울 값을 반환하는 반면 ObjectContext.DeleteObject()
은 void를 반환한다는 점에 유의하는 것이 중요합니다.
사용 제안
어떤 방법을 사용할지는 원하는 결과에 따라 다릅니다. 하위 엔터티를 삭제하지 않고 두 엔터티 간의 관계를 삭제하는 것이 목표인 경우 EntityCollection.Remove()
가 적용됩니다. 엔터티 자체를 삭제하려면 특히 참조 제약 조건을 위반할 수 있는 경우 ObjectContext.DeleteObject()
을 사용해야 합니다.
위 내용은 Entity Framework: `EntityCollection.Remove()`와 `ObjectContext.DeleteObject()` – 어떤 방법을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!