- 개요
EF-Core 프레임워크에서 기본값을 설정하는 방법은 여러가지가 존재합니다.
이때 기본값을 설정하는 방법에서 다음의 사항을 고려해야 합니다.
- Entity Class의 기본값으로 설정되는 경우 : SaveChanges() 함수를 호출해야 실제 DB에 적용
- DB 테이블의 기본값으로 설정되는 경우 : SaveChanges() 함수를 호출하지 않아도 실제 DB에 적용
1) Auto-Property Initializer - Entity Class의 기본값으로 설정

위와 같이 프로퍼티에 대입 연산자를 사용하여 데이터의 기본값을 설정할 수 있습니다.
위와 같은 방식을 Auto-Property Initializer라고 부르고, 해당 방식은 Enity Class의 기본값을 설정합니다.
2) Fluent API 사용 - DB 테이블의 기본값 설정

Fluent API에서 HasDefaultValue 함수를 사용하여 데이터의 기본값을 설정할 수 있습니다.
해당 방식을 사용하면 DB 테이블의 기본값을 설정하는 방식으로 동작합니다.
그러나 해당 방식은 데이터가 생성된 시점이 아닌, 함수가 호출되는 시점을 기준으로 동작한다는 문제가 존재합니다.
3) SQL Fragment - DB 테이블의 기본값 설정

2)의 방식의 문제점을 극복할 수 있는 방식이 SQL Fragment입니다.
동일한 Fluent-API 방식에서 HasDefaultValueSql 함수를 사용하여
데이터가 생성되는 시점에서 DB 테이블에 기본값을 설정합니다.
4) Value Generator
Value Generator는 EF-Core에서 실행하되, DB 테이블의 기본값을 설정하는 방식입니다.
기본값을 생성하는 일종의 규약을 정의하는 방법으로, ValueGenerator 인터페이스를 상속받아 사용합니다.

위와 같이 ValueGenerator 인터페이스를 상속받은 클래스를 생성하고, 추상함수를 오버라이드합니다.
Next 함수를 오버라이드하여 데이터의 기본값에 대한 규약을 정의할 수 있습니다.

이후 생성한 ValueGenerator 클래스를 등록하여 사용하기 위해 OnModelCreating 함수에 로직을 추가합니다.
HasValueGenerator 함수를 호출하여 사용할 ValueGenerator 클래스를 설정합니다.
'대형 프로젝트 - C# + 유니티로 만드는 MMORPG 게임 개발 > (5) EF Core' 카테고리의 다른 글
| Entity State & Relationship (1) (0) | 2025.08.26 |
|---|---|
| Migration (0) | 2025.08.25 |
| User Defined Function(UDF) (0) | 2025.08.25 |
| Backing Field + Relationship (0) | 2025.08.25 |
| Entity Class와 Data Table 연동 (0) | 2025.08.19 |