ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ASP.NET Core] Code First Model 생성하여 Db Table 생성하기
    C#(asp.net | asp.net core) 2022. 7. 15. 14:34
    728x90
    728x90

    이 게시글은 유튜브 개발토끼님의 영상을 공부하며 적는 글이다.

     

     

    현업에서는 보통 기존에 있는 Table 을 가지고 개발하는 일이 많지만 
    작은 프로젝트의 경우 Code First 방식으로 Model을 먼저 생성하고 Table 을 생성하는 방식을 선호하는 듯 하다.
    이 Code First 방식으로 Table 을 생성해보자.
    생성 순서는
    1. Model Class 생성
    2. DbContext 등록
    3. add Migration
    4. update database  

     

     

    생성할 모델은 User(사용자)와 Note(게시물)이다.

    User
    UserNo 사용자 번호(PK)
    UserId 사용자 ID
    UserPassword 사용자 비밀번호
    UserName 사용자 이름
    Note
    NoteNo 게시물 번호(PK)
    NoteTitle 게시물 제목
    NoteContents 게시물 내용
    UserNo 사용자 번호(FK)

    PK, FK를 제외한 컬럼 모두 Not Null 속성을 부여한다.

     

     

    Table 에서 속성(PK, Not Null, FK 등)을 부여하기 위해서 Model 클래스에서는 어노테이션을 사용한다.  
    [Key] : Primary Key 
    [Required] : Not Null
    [Foreign Key] : Foreign Key 설정

    그럼 두 Model 을 클래스로 작성해보자.
    User.cs

    using System.ComponentModel.DataAnnotations;
    
    namespace AspNetCoreMVCStudy.Models
    {
        public class User
        {
            /// <summary>
            /// 사용자 번호
            /// </summary>
            [Key]
            public int UserNo { get; set; }
    
            /// <summary>
            /// 사용자 이름
            /// </summary>
            [Required(ErrorMessage = "사용자 이름을 입력하세요.")]
            public string UserName { get; set; }
    
            /// <summary>
            /// 사용자 ID
            /// </summary>
            [Required(ErrorMessage = "사용자 ID를 입력하세요.")]
            public string UserId { get; set; }
    
            /// <summary>
            /// 사용자 비밀번호
            /// </summary>
            [Required(ErrorMessage = "사용자 비밀번호를 입력하세요.")]
            public string UserPassword { get; set; }
        }
    }

     

    Note.cs

    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    
    namespace AspNetCoreMVCStudy.Models
    {
        public class Note
        {
            /// <summary>
            /// 게시물 번호
            /// </summary>
            [Key]
            public int NoteNo { get; set; }
    
            /// <summary>
            /// 게시물 제목
            /// </summary>
            [Required]
            public string NoteTitle { get; set; }
    
            /// <summary>
            /// 게시물 내용
            /// </summary>
            [Required]
            public string NoteContents { get; set; }
    
            /// <summary>
            /// 작성자 번호
            /// </summary>
            [Required]
            public int UserNo { get; set; }
    
            [ForeignKey("UserNo")]
            public virtual User User { get; set; }
        }
    }

    작성자 번호의 경우 [ForeignKey]로 어떤 테이블의 필드를 참조하고 있는지 명시를 해줘야한다.

     

     

    작성한 클래스를 DbContext에서 사용하려면
    이전에 생성하였던 AspNetCoreMVCStudyDbContext.cs에서 Model을 등록해야한다.
    AspNetCoreMVCStudyDbContext.cs

    ...
        public class AspNetCoreMVCStudyDbContext : DbContext
        {
            public DbSet<User> users { get; set; }
    
            public DbSet<Note> notes { get; set; }
    
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
            	...

     

     

    DbContext에 등록하였다면 변경내역을 Migration 으로 추가해주어야한다. 
    보기 -> 다른 창 -> 패키지 관리자 콘솔을 클릭한다.

     

    패키지 관리자 콘솔 창에서 add-migration "마이그레이션 이름" 을 실행하면 

    Migrations 폴더가 생성되고, 파일이 생성된다.

    파일을 확인해보면 Model 에 정의한것을 바탕으로 Table 을 생성, 정의하는 실행문이 적혀있다.

     

     

    이제 migration 된 파일을 DB에 반영하면 된다.
    다시 패키지 관리자 콘솔 창에서 update-database 를 입력한다.

     

    update되는 내역이 밑에 쫙 뜨는데 마지막에 

     

    Done 이 확인되었다면 DB에 반영이 된 걸 확인할 수 있다.

    728x90
    728x90
Designed by Tistory.