- 개요
User Defined Function, 줄여서 UDF는 EF-Core에서 호출하는 사용자가 직접 만든 SQL을 의미합니다.
UDF를 사용하면 연산을 컨텐츠 단계가 아닌, DB에서 수행할 수 있고
EF-Core로 작성된 비효율적인 쿼리를 배제하여 사용할 수 있다는 장점이 있습니다.
UDF를 사용하기 위해서는 3가지의 절차를 수행합니다.
- 1) Configuration : EF-Core에서 static 함수를 생성
- 2) 등록 : DB에서 사용할 쿼리를 정의
- 3) 사용
1) DataModel 클래스

아이템에 대한 평점을 매기기 위한 ItemReview 엔티티 클래스를 추가합니다.

Item 엔티티 클래스에 여러개의 ItemReview를 저장하는 Navigation Property를 추가합니다.
2) 메인 Program 클래스

메인 Program 클래스에 EF-Core에서 호출할 UDF 함수를 정의하였습니다.
DbFunction 어트리뷰트를 사용하면 함수를 UDF로 설정할 수 있습니다.
또 해당 함수가 구현되지 않은 상태에서 호출하는 경우 예외처리하도록 로직을 구성하였습니다.
3) AppDBContext 클래스

HasDbFunction 함수를 사용하여 Program 클래스의 static 함수를 UDF 함수로 설정하였습니다.
4) DBCommands 클래스

DB를 정의하는 InitalizeDB 함수에 위의 로직을 추가하였습니다.
EF-Core에서 선언한 UDF를 SQL 문법을 사용하여 정의합니다.
정의한 SQL문을 ExecuteSqlRaw 함수를 호출하여 실행합니다.

CreateTestData 함수에 위의 로직을 추가합니다.
첫 번째 아이템과 두 번째 아이템에 대한 평점을 추가하였습니다.

CalcAverage 함수를 위와 같이 추가하였습니다.
GetAverageReviewScore 함수를 호출하여 아이템의 ID에 따라 평점을 출력합니다.
- 최종 실행 결과

'대형 프로젝트 - C# + 유니티로 만드는 MMORPG 게임 개발 > (5) EF Core' 카테고리의 다른 글
| Migration (0) | 2025.08.25 |
|---|---|
| Default Value (0) | 2025.08.25 |
| Backing Field + Relationship (0) | 2025.08.25 |
| Entity Class와 Data Table 연동 (0) | 2025.08.19 |
| Shadow Property & Backing Field (0) | 2025.08.19 |