- 개요
CRUD 중에서 Delete를 수행하는 방법을 알아보겠습니다.
Delete는 다음의 절차에 따라 이뤄집니다.
- 1) Tracking Entity를 가져와서
- 2) Remove 함수 호출
- 3) SaveChanges 함수 호출
1) 일반적인 Delete - DBCommands 클래스

TestDelete 함수를 호출하여 Delete를 수행합니다.
위에서 작성한 3개의 절차에 따라 수행하는 것을 확인할 수 있습니다.


실행 결과 데이터 테이블에서 해당하는 데이터를 삭제한 것을 확인할 수 있습니다.
2) 특수한 Delete
상황에 따라서는 데이터를 바로 제거하지 않고 어느정도의 유예를 두어 제거할 필요가 있습니다.
이런 상황에서 사용할 수 있는 옵션이 Soft Delete로서 플래그 프로퍼티를 두어 제거할지 말지를 결정합니다.
2 - 1) DataModel 클래스

Item 클래스에 플래그 프로퍼티로 사용할 SoftDeleted 프로퍼티를 추가하였습니다.
해당 변수가 true라면 삭제할 데이터로 판단합니다.
2 - 2) AppDBContext 클래스

DbContext에서 OnModelCreating 함수를 오버라이드하여 Entity 클래스에 대한 규약을 정의할 수 있습니다.
프로젝트에서는 Item 클래스에 대해 SoftDeleted가 false인 데이터만 사용할 수 있습니다.
2 - 3) DBCommands 클래스

ShowItems 함수를 위와 같이 수정하였습니다.
규약이 적용된 데이터에서 IgnoreQueryFilters 함수를 사용하면 규약을 무시하고 접근이 가능합니다.
따라서 SoftDeleted가 true인 데이터에 대해서도 로그를 남겨 출력합니다.

TestDelete 함수의 로직을 위와 같이 수정하였습니다.
제거할 데이터를 바로 Remove하지 않고 플래그를 true로 설정하도록 수정하였습니다.
2 - 4) 실행 결과


위와 같이 제거할 데이터의 불리언 플래그가 true로 설정된 것을 확인할 수 있습니다.
'대형 프로젝트 - C# + 유니티로 만드는 MMORPG 게임 개발 > (5) EF Core' 카테고리의 다른 글
| Relationship Configuration (0) | 2025.08.18 |
|---|---|
| Configuration (0) | 2025.08.18 |
| Relationship Update (0) | 2025.08.12 |
| 외래키와 Nullable (0) | 2025.08.11 |
| Connected와 Disconnected (0) | 2025.08.11 |