./../
  I D :    암호 :    ID저장      회원가입    네게(쥔장) 쪽지보내기    메모장    각종계산기    컬러빠렛    이모티콘(프레임, 새창)    보유장비
목록으로 가기..
Entity Framework : Data Annotations 김종호 | 삭제하기

Data Annotation은 .NET Framework에서 Data Validation을 돕기 위해 제공되는 기능으로 클래스의 속성에 여러 Data Annotation 특성(attribute)를 추가함으로 별도의 코드없이 Validation 규칙을 적용할 수 있다. Entity Framework의 DbSet 클래스에서 이러한 Data Annotation을 사용하여 테이블 컬럼에 특별한 속성을 지정할 수 있으며, 또한 각 필드의 출력포맷과 특성들을 지정하여 ASP.NET MVC와 같은 외부 프레임워크에서 이러한 Validation 특성들을 활용할 수 있도록 하고 있다. Entity Framework에서 테이블 스키마를 정의하는 클래스를 작성할 때, 컬럼타입, 최대 크기, Identity 속성 등 테이블 정의에 필요한 여러 속성들을 함께 지정할 수 있다. 또한, 클래스의 필드(컬럼)가 외부에 표시될 때, DisplayName 이나 DisplayFormat 같은 특성들을 사용할 수 있는데, 예를 들어 MVC 웹 프레임워크에서 이러한 Display 특성들을 사용하여 필드의 헤더나 포맷을 자동으로 적용한다. 아래 예제는 Customer 클래스에 여러 Data Annotation을 붙여본 샘플이다. Entity Framework에서 Primary Key (PK)를 지정하기 위해, [Key] 라는 특성을 지정한다. 만약 클래스에 Key 특성이 없으면 Id 혹은 *Id와 같이 끝이 Id로 끝나는 컬럼을 Primary Key로 사용한다. Id 컬럼은 Identity 로 만들기 위해서는 DatabaseGenerated(DatabaseGeneratedOption.Identity) 특성을 지정하면 되는데, 이를 사용하면 Id 컬럼이 DB에서 자동으로 채워진다. PK 이외에 Foreign Key를 지정하기 위해서는 [ForeignKey()] 를 사용하며, 특정 컬럼에 인덱스를 생성하기 위해서는 [Index] 특성을 지정한다. 컬럼이 반드시 데이타가 입력되어야 하는 경우 즉 NULL이 허용되지 않는 경우 [Required] 특성을 지정한다. 또한, 문자열의 최대, 최소길이를 표현하기 위해서는 MaxLength(n), MinLength(m) 특성을 지정한다. 예제 using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Data.Entity; public class Customer { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid Id { get; set; } [StringLength(100)] [Index(IsUnique = true)] public string LoginId { get; set; } [Display(Name = "Create Date")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] public DateTimeOffset CreateDate { get; set; } [Required] [MaxLength(100)] public string Name { get; set; } [EmailAddress] public string Email { get; set; } public int Age { get; set; } } 자주 사용되는 Data Annotation
Data Annotation설명예제
Table Table 속성 지정. Table명 지정 [Table("CustTab")]
public class Customer
Column Column 속성 지정 [Column("Misc", typename="ntext")]
public string Data {get; set; }
Key Primary Key 지정 [Key] public int Id { get; set; } PK가 복수 컬럼인 경우:
[Key] [Column(Order=1)]
public string FirstName { get; set; }
[Key] [Column(Order=2)]
public string Last { get; set; }
ForeignKey Foreign Key [ForeignKey("Id")]
public int EmpId { get; set; }
Index Index 컬럼 지정 (EF 6.1+) [Index]
public int RefId { get; set; }
DatabaseGenerated DB 생성 옵션 지정 [DatabaseGenerated(DatabaseGenerationOption.Identity]
public int Id { get; set; }
Required 필수 항목. NOT NULL 필드 [Required]
public string Name { get; set; }
MaxLength 최대 길이 [MaxLength(100)]
public string Name { get; set; }
MinLength 최소 길이 [MinLength(5)]
public string Name { get; set; }
Range 최소, 최대 범위값을 지정 [Range(0, 100)]
public int Score { get; set; }
NotMapped 테이블에 저장되지 않는 필드 [NotMapped]
public int Extra { get; set; }
Timestamp Timestamp 컬럼 [Timestamp]
public byte[] TimeStamp { get; set; }
Email Email 주소 체크 [EmailAddress]
public string Email { get; set; }


첨언 달기
이름 : 암호 :
번호    제목...(첨언) 작성일 접속
xxx [공지]자유겔러리 등록 오류 수정 완료 2017-12-22 685265
xxx [공지]자료실 다운로드 오류 처리 2017-12-01 31175
xxx [공지]비난, 광고 게시물을 신고, 차단, 삭제됩니다. 2005-06-26 26903
136 [일반]  SQL Server 2017 설치한 PolyBase 설치 되지 않을경우 2018-03-09(금) 8461
135 [일반]  UltraEdit(울트라에디트)에서 한글이 깨질때 2018-03-08(목) 16743
134 [일반]  mp3tag 이용해서 음악화일 프로파일 변경할때 2018-02-25(일) 3356
133 [일반]  삼성 스마트폰 서비스 모드 진입 2018-02-23(금) 7108
132 [일반]  LG V30 관리자 모드 진입 2018-02-23(금) 4074
131 [일반]  윈도우10 시작메뉴 먹통일때 2018-02-20(화) 9363
130 [일반] > Entity Framework : Data Annotations < 2018-01-25(목) 16021
129 [C#]  C# 비동기적 프로그램을 위한 키워드 2018-01-22(월) 3631
128 [일반]  이스케이프 시퀀스 2018-01-16(화) 3129
127 [일반]  ASP.NET CORE MVC를 IIS에 올리기 위해 2018-01-12(금) 3240
126 [일반]  ASP.NET에서 사용할 수 있는 기술 2018-01-08(월) 3516
125 [일반]  MS SQL SERVER 원격 접속 안될때 2018-01-08(월) 5337
124 [일반]  VirtualBox VT-x is not available. (VERR_VMX_NO_VMX). 오류발생할때 2018-01-08(월) 4252
123 [일반]  uTorrent 윈도우 기본 설치 경로 2017-12-30(토) 3779
122 [CPP]  ESP8266 A/D Converter Test 2017-12-21(목) 5434
121 [일반]  Arduino IDE의 폰트, Tab Size, Auto Indent 변경 2017-12-19(화) 4681
120 [CPP]  ESP8266 MAC Address View 2017-12-18(월) 5963
119 [일반]  ASP.NET C# DB 통신 2017-12-14(목) 3611
118 [일반]  MS SQL SERVER를 설치할때 인증설정 2017-12-14(목) 3716
117 [C#]  C# Controller에서 View로 데이터 전송 2017-12-14(목) 3717
검색 :
Page : 이전 1  2  3  4  5  6  7  8  9  10  11  12  13  다음




Copyright 2003-2026 ⓒ 김종호. All rights reserved. kimjongho.co.kr kimjongho.kr kimjongho.net kimjongho.com