
728x90

ASP.NET Core의 Entity Framework (EF)에서 다양한 필드 유형을 데이터베이스로 마이그레이션할 때, 각 필드 유형은 데이터베이스에서 특정 컬럼 속성으로 매핑됩니다. 다음은 다양한 데이터 유형과 그에 대응하는 데이터베이스 컬럼 속성에 대한 설명과 예시입니다.
1. 정수형 (Integer Types)
int- 데이터베이스 타입:
int - Null 허용 여부: 기본적으로
NOT NULL
- 데이터베이스 타입:
public int Age { get; set; }int?- 데이터베이스 타입:
int - Null 허용 여부:
NULL
- 데이터베이스 타입:
public int? Age { get; set; }- 다른 정수형 (
short,long,byte등)short:smallintlong:bigintbyte:tinyint- Null 허용 여부: 기본적으로
NOT NULL(nullable로 정의하면NULL)
public short ShortNumber { get; set; } public long LongNumber { get; set; } public byte ByteNumber { get; set; }
2. 부동 소수점형 (Floating Point Types)
float- 데이터베이스 타입:
real - Null 허용 여부: 기본적으로
NOT NULL
- 데이터베이스 타입:
public float Price { get; set; }double- 데이터베이스 타입:
float - Null 허용 여부: 기본적으로
NOT NULL
- 데이터베이스 타입:
public double Price { get; set; }decimal- 데이터베이스 타입:
decimal(18, 2)(기본 값) - Null 허용 여부: 기본적으로
NOT NULL - 소수점 이하 자릿수와 정밀도는 애노테이션이나 Fluent API로 설정 가능
- 데이터베이스 타입:
public decimal Amount { get; set; }
3. 날짜 및 시간형 (Date and Time Types)
DateTime- 데이터베이스 타입:
datetime2 - Null 허용 여부: 기본적으로
NOT NULL
- 데이터베이스 타입:
public DateTime DateOfBirth { get; set; }DateTime?- 데이터베이스 타입:
datetime2 - Null 허용 여부:
NULL
- 데이터베이스 타입:
public DateTime? DateOfBirth { get; set; }TimeSpan- 데이터베이스 타입:
time - Null 허용 여부: 기본적으로
NOT NULL
- 데이터베이스 타입:
public TimeSpan Duration { get; set; }
4. 부울형 (Boolean Type)
bool- 데이터베이스 타입:
bit - Null 허용 여부: 기본적으로
NOT NULL
- 데이터베이스 타입:
public bool IsActive { get; set; }bool?- 데이터베이스 타입:
bit - Null 허용 여부:
NULL
- 데이터베이스 타입:
public bool? IsActive { get; set; }
5. 열거형 (Enum Type)
- Enum
public enum Status { Active, Inactive, Pending } public Status CurrentStatus { get; set; }- 데이터베이스 타입:
int(기본적으로 열거형의 정수 값이 저장됨) - Null 허용 여부: 기본적으로
NOT NULL - 문자열로 저장하고 싶다면
ValueConverter를 사용하여 설정 가능
- 데이터베이스 타입:
반응형
6. GUID
Guid- 데이터베이스 타입:
uniqueidentifier - Null 허용 여부: 기본적으로
NOT NULL
- 데이터베이스 타입:
public Guid UniqueId { get; set; }Guid?- 데이터베이스 타입:
uniqueidentifier - Null 허용 여부:
NULL
- 데이터베이스 타입:
public Guid? UniqueId { get; set; }
7. 바이너리 데이터 (Binary Data)
byte[]public byte[] Data { get; set; }- 데이터베이스 타입:
varbinary(MAX) - Null 허용 여부: 기본적으로
NULL
- 데이터베이스 타입:
전체 예시 모델 클래스 및 마이그레이션
다음은 다양한 속성을 사용하는 예시 모델 클래스와 해당 마이그레이션 코드입니다.
public class ExampleEntity
{
public int Id { get; set; }
[MaxLength(50)]
public string Name { get; set; } // nvarchar(50) NOT NULL
[Unicode(false)]
[MaxLength(100)]
public string Email { get; set; } // varchar(100) NOT NULL
[MaxLength(10)]
[FixedLength]
public string Code { get; set; } // nchar(10) NOT NULL
public string? Description { get; set; } // nvarchar(MAX) NULL
public int Age { get; set; } // int NOT NULL
public float Price { get; set; } // real NOT NULL
public decimal Amount { get; set; } // decimal(18, 2) NOT NULL
public DateTime DateOfBirth { get; set; } // datetime2 NOT NULL
public TimeSpan Duration { get; set; } // time NOT NULL
public bool IsActive { get; set; } // bit NOT NULL
public Guid UniqueId { get; set; } // uniqueidentifier NOT NULL
public byte[] Data { get; set; } // varbinary(MAX) NULL
}
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "ExampleEntities",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Name = table.Column<string>(maxLength: 50, nullable: false),
Email = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: false),
Code = table.Column<string>(type: "nchar(10)", maxLength: 10, nullable: false),
Description = table.Column<string>(nullable: true),
Age = table.Column<int>(nullable: false),
Price = table.Column<float>(nullable: false),
Amount = table.Column<decimal>(type: "decimal(18, 2)", nullable: false),
DateOfBirth = table.Column<DateTime>(nullable: false),
Duration = table.Column<TimeSpan>(nullable: false),
IsActive = table.Column<bool>(nullable: false),
UniqueId = table.Column<Guid>(nullable: false),
Data = table.Column<byte[]>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_ExampleEntities", x => x.Id);
});
}
데이터베이스에서 생성된 테이블
CREATE TABLE [dbo].[ExampleEntities] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (50) NOT NULL,
[Email] VARCHAR (100) NOT NULL,
[Code] NCHAR (10) NOT NULL,
[Description] NVARCHAR (MAX) NULL,
[Age] INT NOT NULL,
[Price] REAL NOT NULL,
[Amount] DECIMAL (18, 2) NOT NULL,
[DateOfBirth] DATETIME2 NOT NULL,
[Duration] TIME NOT NULL,
[IsActive] BIT NOT NULL,
[UniqueId] UNIQUEIDENTIFIER NOT NULL,
[Data] VARBINARY (MAX) NULL,
CONSTRAINT [PK_ExampleEntities] PRIMARY KEY CLUSTERED ([Id] ASC)
);
위의 예시들을 통해 다양한 필드 유형을 EF Core에서 정의하고 데이터베이스로 마이그레이션할 때 생성되는 컬럼 속성을 살펴보았습니다. 이를 통해 데이터베이스 스키마를 더욱 세밀하게 구성할 수 있습니다.
반응형
'WEB - PHP, JQuery, Bootstrap' 카테고리의 다른 글
| .NET Core에서 MemoryCache를 활용한 Backend 캐시 구현 가이드 (2) | 2024.09.13 |
|---|---|
| A4 용지 출력에 맞춘 CSS 설정 (76) | 2024.07.26 |
| PHP 프로그래밍 시 주의해야 하는 보안 코드 (1) | 2024.07.03 |
| 모바일 웹 - 가로화면/세로화면 인식 및 처리 방법 3가지 (0) | 2021.12.29 |
| [CSS] 열 틀고정 + 행 틀고정 - 공대여자 버전 (2) | 2021.12.21 |