본문 바로가기

백엔드/닷넷

데이터베이스 생성 시 제약조건 추가하기

반응형

엔티티프레임워크를 사용하여 테이블 데이터의 제약조건을 설정해 보겠습니다.

애플리케이션 생성

 

.NET web-API 생성하기

개발도구 설치하기 .NET을 이용하여 웹애플리케이션을 만들기 위해서는 .NET에서 제공하는 개발도구가 필요합니다. 개발도구 다운로드는 아래 링크에서 가능합니다. .NET | Free. Cross-platform. Open Sour

jin-co.tistory.com

데이터베이스 생성하기

 

Sqlite 사용하기 - 코드 우선 방식

.NET은 데이터베이스를 생성할 때 작성된 코드를 통해 데이터베이스를 생성하는 Code first (코드우선) 방식과 데이터베이스의 데이터를 바탕으로 코드를 작성하는 data first (데이터 우선) 방식을 제

jin-co.tistory.com

제약조건 설정하기

제약조건은 'IEntityTypeConfiguration'인터페이스를 사용하여 콘텍스트 파일에서 설정합니다. 아래처럼 인터페이스를 추가하고

구현하면 아래와 같이 제약조건을 추가할 수 있는 메서드가 생성됩니다 (원래 밑에 생성되는데 위로 옮겼습니다).

▶ 제약조건 추가

제약조건 추가는 아래 코드를 사용하여 각 개체 및 개체의 속성에 대해 가능합니다.

builder.Property()
builder.Property(p => p.Description).HasMaxLength(200);

▶ 타입 추가

타입 추가는 아래 코드를 사용하여 각 개체의 속성에 대해 가능합니다.

builder.Property(d => d.Fee).HasColumnType("decimal(18,2)");

예를 들어, Sqlite의 경우 decimal 타입이 존재하지 않는 데 아래와 같이 해당 타입설정이 가능합니다.


※ 스패너 아이콘으로 표시는 것들이 속성입니다.


마지막으로 설정을 사용하기 위해 아래 코드를 콘텍스트 클래스에 추가합니다.

using System.Reflection;
using Microsoft.EntityFrameworkCore.Metadata.Builders;

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
  base.OnModelCreating(modelBuilder);
  modelBuilder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly());
}


※ 구성폴더를 만들어 옮기면 콘텍스트 파일이 복잡 해 지는 것을 방지할 수 있습니다.

 

폴더생성

클래스생성

구성파일 작성 (구성파일)

기존 설정대체 코드 추가 (콘텍스트파일)


이상으로 데이터베이스 생성 시 테이블 필드에 제약조건을 추가하는 방법을 보았습니다.

 

 

728x90
반응형