C# & .NetCore
[.Net Core] EF Core 엔티티 Configure 에서 자주 사용되는 메서드 정리
개발자 포비
2025. 6. 1. 18:04
📚 EntityTypeBuilder 주요 메서드 정리 (줄글 버전)
🏷️ 키 설정
HasKey
: 엔티티의 기본 키(Primary Key)를 지정하는 메서드.
예:builder.HasKey(u => u.Id);
🏷️ 속성 설정
Property
: 특정 속성(컬럼)에 대한 설정을 시작한다. 이후 체이닝으로 다양한 속성 설정을 추가할 수 있다.
예:builder.Property(u => u.Name).HasMaxLength(100).IsRequired();
HasMaxLength
: 문자열 속성의 최대 길이를 지정한다.
예:builder.Property(u => u.Name).HasMaxLength(100);
IsRequired
: 해당 속성을 NOT NULL로 설정한다.
예:builder.Property(u => u.Name).IsRequired();
HasColumnName
: 컬럼명을 직접 지정한다.
예:builder.Property(u => u.Name).HasColumnName("UserName");
HasColumnType
: 컬럼의 데이터베이스 타입을 지정한다.
예:builder.Property(u => u.Price).HasColumnType("decimal(18,2)");
🏷️ 테이블 설정
ToTable
: 엔티티가 매핑될 테이블의 이름을 지정한다.
예:builder.ToTable("Users");
🏷️ 관계 설정 (엔티티 간 연관 관계)
HasOne
: 다른 엔티티와의 1:1 또는 N:1 관계를 설정한다.
예:builder.HasOne(u => u.Profile).WithOne(p => p.User);
WithOne
: 관계의 반대편을 설정한다.
예:builder.HasOne(u => u.Profile).WithOne(p => p.User);
HasMany
: 1:N 관계를 설정한다.
예:builder.HasMany(u => u.Orders).WithOne(o => o.User);
WithMany
: 다대다 관계를 설정한다.
예:builder.HasMany(u => u.Roles).WithMany(r => r.Users);
HasForeignKey
: 외래 키를 지정한다.
예:builder.HasOne(o => o.User).WithMany().HasForeignKey(o => o.UserId);
🏷️ 인덱스 설정
HasIndex
: 특정 컬럼에 인덱스를 추가한다.IsUnique()
를 붙이면 유니크 인덱스도 가능하다.
예:builder.HasIndex(u => u.Email).IsUnique();
🏷️ 매핑 제외
Ignore
: 특정 속성을 DB에 매핑하지 않도록 설정한다.
예:builder.Ignore(u => u.TempField);
🏷️ 고급 설정
HasCheckConstraint
: 컬럼에 체크 제약조건을 추가한다.
예:builder.HasCheckConstraint("CK_Price_Positive", "[Price] > 0");
OwnsOne
: Value Object(소유 엔티티)를 설정한다.
예:builder.OwnsOne(u => u.Address);
✅ 요약
EntityTypeBuilder<T>
는 엔티티의 DB 매핑을 세부적으로 설정할 수 있는 빌더다.- 키, 속성, 관계, 인덱스 등 카테고리별로 메서드를 사용해 체이닝 방식으로 작성 가능하다.
- 이 설정은
OnModelCreating
이나IEntityTypeConfiguration<T>.Configure
에서 적용된다.