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에서 적용된다.