./../
  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 685418
xxx [공지]자료실 다운로드 오류 처리 2017-12-01 31333
xxx [공지]비난, 광고 게시물을 신고, 차단, 삭제됩니다. 2005-06-26 27025
140 [일반]  로지텍 게이밍 키보드 세이브 경로 2018-06-22(금) 5210
139 [일반]  Windows Server 2008 R2 RDP 다중 접속 허용 2018-05-13(일) 3551
138 [일반]  Fiio Memory Directory Name 2018-03-29(목) 3652
137 [일반]  VirtualBox 업그레이드후 NtCreateFile 에러 2018-03-12(월) 6557
136 [일반]  SQL Server 2017 설치한 PolyBase 설치 되지 않을경우 2018-03-09(금) 8478
135 [일반]  UltraEdit(울트라에디트)에서 한글이 깨질때 2018-03-08(목) 16755
134 [일반]  mp3tag 이용해서 음악화일 프로파일 변경할때 2018-02-25(일) 3365
133 [일반]  삼성 스마트폰 서비스 모드 진입 2018-02-23(금) 7124
132 [일반]  LG V30 관리자 모드 진입 2018-02-23(금) 4084
131 [일반]  윈도우10 시작메뉴 먹통일때 2018-02-20(화) 9377
130 [일반] > Entity Framework : Data Annotations < 2018-01-25(목) 16030
129 [C#]  C# 비동기적 프로그램을 위한 키워드 2018-01-22(월) 3644
128 [일반]  이스케이프 시퀀스 2018-01-16(화) 3137
127 [일반]  ASP.NET CORE MVC를 IIS에 올리기 위해 2018-01-12(금) 3249
126 [일반]  ASP.NET에서 사용할 수 있는 기술 2018-01-08(월) 3528
125 [일반]  MS SQL SERVER 원격 접속 안될때 2018-01-08(월) 5353
124 [일반]  VirtualBox VT-x is not available. (VERR_VMX_NO_VMX). 오류발생할때 2018-01-08(월) 4257
123 [일반]  uTorrent 윈도우 기본 설치 경로 2017-12-30(토) 3790
122 [CPP]  ESP8266 A/D Converter Test 2017-12-21(목) 5439
121 [일반]  Arduino IDE의 폰트, Tab Size, Auto Indent 변경 2017-12-19(화) 4691
검색 :
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