대형 프로젝트 - C# + 유니티로 만드는 MMORPG 게임 개발/(5) EF Core

외래키와 Nullable

monstro 2025. 8. 11. 17:55
728x90
반응형

- 개요

외래키로 사용되는 테이블과 외래키를 갖는 테이블은 다음과 같은 이름으로 표현할 수 있습니다.

  • 외래키로 사용되는 테이블 : Principal Entity(의존되는 Entity) -> 프로젝트에서는 Player
  • 외래키를 갖는 테이블 : Dependent Entity(의존하는 Entity) -> 프로젝트에서는 Item

 

프로젝트에 따라 정책을 설정하여 Principal Entity null인 경우를 허용할지 / 말지를 결정할 수 있습니다.

이때 프로그래밍 단계에서는 Nullable을 사용하여 null인 경우의 정책을 쉽게 처리할 수 있습니다.

 

1) 사전작업 - DBCommands 클래스

 

ShowItems 함수를 위와 같이 구성하였습니다.

Item에서 참조하고 있는 Owner null인 경우null이 아닌 경우에 따라 다른 결과를 출력합니다.

 

 

Test 함수를 위와 같이 추가하였습니다.

제거할 플레이어의 ID를 입력하고 탐색하여 해당하는 데이터를 제거합니다.

 

2) 외래키가 Nullable이 아닌 경우

2 - 1) DataModel 클래스

 

Item 클래스에서 이전에 사용하는 ForeignKey 어트리뷰트 대신 외래키 프로퍼티를 추가하였습니다.

이때 Nullable이 아닌 일반 자료형을 사용하도록 설정하였습니다.

 

2 - 2) 실행 결과

실행

 

실행된 결과

 

실행한 결과는 위와 같습니다.

1번 ID를 가진 플레이어를 제거하고 해당 플레이어와 연결된 아이템까지 제거한 것을 확인할 수 있습니다.

 

3) 외래키가 Nullable인 경우

3 - 1) DataModel 클래스

 

이번에는 일반 자료형이 아닌 Nullable 외래키를 사용하도록 설정하였습니다.

 

3 - 2) 실행 결과

실행

 

실행된 결과

 

실행한 결과는 위와 같습니다.

1번 ID를 가진 플레이어는 제거되었지만 해당 플레이어와 연결된 아이템제거되지 않은 것을 확인할 수 있습니다.

728x90
반응형

'대형 프로젝트 - C# + 유니티로 만드는 MMORPG 게임 개발 > (5) EF Core' 카테고리의 다른 글

Delete  (0) 2025.08.12
Relationship Update  (0) 2025.08.12
Connected와 Disconnected  (0) 2025.08.11
Update 기초  (0) 2025.08.11
Entity 상태 관리  (0) 2025.08.11