- 개요
EF Core 프레임워크에서 데이터 테이블로 사용하는 클래스를 Entity 클래스라고 표현합니다.
그리고 이런 Entity 클래스(데이터 테이블)간의 관계는 다음과 같이 3개의 관계가 존재합니다.
- 1 : 1 관계
- 1 : 多 관계
- 多 : 多 관계
이번 포스트에서는 EF Core에서 1 : 1 관계와 1 : 多 관계를 구현하는 방법을 알아보겠습니다.
- 사전 작업

시작하기에 앞서 이전에 만든 DbContext에 새로운 DbSet인 Players를 추가하겠습니다.
해당 DbSet을 추가함으로써 Player 엔티티 클래스에 대한 접근과 조작이 가능하도록 명시하겠습니다.

main 함수의 로직을 위와 같이 일부 수정하였습니다.
기존의 Update와 Delete를 삭제하고 참조관계에 있는 데이터 테이블의 데이터를 가져오도록 수정하였습니다.
1) 1 : 1 관계의 구현
1 - 1) DataModel 클래스


1 : 1 관계를 구현하기 위해서는 데이터 테이블에 반드시 외래키를 포함시켜야 합니다.
외래키를 포함시키는 방법은 2가지로 구성되어 있습니다.
- 외래키 프로퍼티를 추가
- ForeignKey 어트리뷰트를 사용
프로젝트에서는 ForeignKey 어트리뷰트를 사용하여 Item 테이블에서 Player 테이블을 참조합니다.
1 - 2) DBCommands 클래스

ShowItems 함수의 로직은 위와 같습니다.
검색할 플레이어의 이름을 입력받고 입력받은 값을 통해 Where 쿼리를 사용하여 데이터를 가져옵니다.
가져온 데이터를 Include 함수를 사용하여 즉시 로딩하여 플레이어의 아이템의 ID를 출력합니다.
- 1 : 1 관계에서의 실행 결과

위와 같이 출력되는 것을 확인할 수 있습니다.
2) 1 : 多 관계의 구현
2 - 1) DataModel 클래스


1 : 多 관계에서는 위와 같이 데이터 테이블의 외래키를 생략하는 것이 가능합니다.
또 단독으로 다수의 테이블을 참조하는 테이블은 데이터 컨테이너를 사용하여 데이터를 저장해야 합니다.
프로젝트에서는 List보다 효율이 좋은 ICollection을 사용하여 데이터를 저장합니다.
2 - 2) DBCommands 클래스

ShowItems 함수의 로직은 위와 같습니다.
검색할 플레이어의 이름을 입력받고 입력받은 값을 통해 Where 쿼리를 사용하여 데이터를 가져옵니다.
가져온 데이터를 Include 함수를 사용하여 즉시 로딩하고 순회하면서 플레이어의 아이템의 ID를 출력합니다.
- 1 : 多 관계에서의 실행 결과

위와 같이 출력되는 것을 확인할 수 있습니다.
'대형 프로젝트 - C# + 유니티로 만드는 MMORPG 게임 개발 > (5) EF Core' 카테고리의 다른 글
| Entity 상태 관리 (0) | 2025.08.11 |
|---|---|
| Data Transfer Object (0) | 2025.08.05 |
| 데이터 로딩 (0) | 2025.08.05 |
| CRUD (0) | 2025.08.04 |
| EF Core 프레임워크를 사용하여 간단한 DB 생성 (0) | 2025.07.29 |