엔터티 프레임 워크는 메모리에서 개체로 인스턴스화되지 않은 데이터베이스에서 데이터를 삭제할 수 없습니다. 즉, 학교 데이터, 모든 학생 데이터, 모든 학생 부모 데이터 등을로드해야하므로 모든 데이터를 수동으로 삭제해야합니다.
에 매핑 된 데이터베이스의 저장 프로 시저를 사용하여이 데이터를 모두 삭제하면 필요하지 않으므로이 방법을 사용하면이 문제를 해결할 수 있습니다. 모든 데이터를 메모리에 저장합니다.
그러나 이것은 또한 골칫거리로 보입니다. 가장 좋은 방법은 Cascade delete
을 데이터베이스에 적용하고 엔터티 프레임 워크의 모델에도 매핑하는 것입니다. 여기에는 두 가지 장점이 있습니다. 학교 데이터 만로드해야하고 모델에서 삭제 된 후에는 데이터베이스에서 삭제되고 계단식 삭제는 참조 데이터를 모두 삭제합니다. 그러나 학교 및 학생 데이터가 이미 메모리에있는 경우 EF
은 메모리에서 해당 객체를 삭제 된 것으로 표시하여 데이터가 데이터베이스 상태와 일치하도록합니다.
이 문제의 최상의 해결 방법은 데이터베이스 수정 여부에 따라 다릅니다. 가능한 경우 cascade delete
으로 이동하십시오. 당신이 할 수 없다면 - 나는 성능이 좋다고 가정하고 데이터베이스에 학부모 등 많은 학생들이있는 것으로 가정하여 stored procedure
접근법을 권장합니다.
가능한 복제본 [특정 엔터티와 관련된 모든 엔터티를 삭제하려면 어떻게합니까?] (http://stackoverflow.com/questions/8557679/how-do-i-delete-all-the-entities-related- to-a-specific-entity) – Eranga