[ASP.NET MVC] 6-7 EntityFramework Core 소개 및 MS SQL SERVER 정리

BruteForceA·2022년 6월 28일
1
post-thumbnail

개발환경

  • Visual Studio Community 2017
  • ASP.NET Core 2.2



EntityFramework Core 소개 및 MS SQL SERVER 정리


1. ADO.NET


2. Enterprise Library 5

  • 쿼리문을 직접 작성 -> 값을 처리
  • Logging
  • 쿼리문 직접 작성 -> 오류발생 소지가 높다.

3. EntityFramework(개발 방식2가지)

1. Database First 방식

  • Database DBA(데이터베이스 관리자)
  • 설계완료, 물리적 데이터베이스도 모두 완성된 상태
  • database 기준으로 application 개발
  • 규모가 있는 회사들이 사용
  • 설계, 성능 등을 고려해야하기 때문에
  • ex) MyBatis

2. Code First 방식

  • 소규모 개발, 기술에 민감한 사람이 사용
  • 성능향상은 나중에 생각하는 방식
  • 역으로 Code -> DB 생성해서 Application 개발
  • ORM 공부를 많이해야 한다.
  • ex) Hibernate



EntityFramework Core로 데이터베이스 생성하기

Code first 방식 순서

1. 프레임워크 업그레이드 ASP.NET MVC Core 1.1

2. EntityFramework Core 설치

3. Model Class -> DbContext 생성 -> Table 생성할 수 있는 코드를 작성.

4. DbContext -> 실제 테이블을 생성


EntityFramework Core 설치


nuget package 에서
EntityFrameworkCore, EntityFrameworkCore.SqlServer, EntityFrameworkCore.Tools 를 설치
세개 다 2.26 버전으로 패키지를 다운받았다.




Model Class -> DbContext 생성 -> Table 생성

Models

/* User */
public class User
{
	[Key] // PK 설정
	public int UserNo{ get; set; } //사용자 번호(PK)
    
    [Required] // Not Null 설정
   	public string UserName{ get; set; } //사용자 이름
    
    [Required]
    public string UserId{ get; set; } // 사용자 ID
    
    [Required]
    public string UserPassword { get; set;} // 사용자 Password
   }
}

/* Note */
public class Note
{
    [Key]
	public int NoteNo{ get; set; } // 게시물 번호(PK)
    
    [Required] // Not Null 설정
   	public string NoteTitle{ get; set; } // 게시물 제목
    
    [Required]
    public string NoteContents{ get; set; } //게시물 내용
    
    [Required]
    public int UserNo { get; set;} // 작성자(숫자 - 사용자 번호)
    
    [ForeignKey("UserNo")] // User 테이블 UserNo를 외래키로 설정한다.
    public virtual User User{ get; set; }
   }
}

외래키 참조할때 virtual을 안 써도 결과는 같지만 EntityFramework 자체에서는 쓰는걸 권장한다. virtual을 사용시 Lazy loading(지연로딩)과 관련이 있지만 자세한건 나중에 설명한다.



Lazy loading(지연로딩) : 페이지를 읽어들이는 시점에 중요하지 않은 리소스 로딩을 추 후에 하는 기술


DataContext 생성 -> Table 생성


public class AspnetNoteDbContext : DbContext
{

	public DbSet<User> Users{ get; set; } // 테이블 생성하는 코드
    
    public DbSet<Note> Notes { get; set; }
    
    /* DB와 연결하는 커넥션 */
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
	 	optionsBuilder.UserSqlServer(@"Server=myServerAddress;Database=myDataBase;User Id=MyUsername;Password=myPassword;");
    
    }
  }
}



실제 테이블을 생성

Package Manager Console 에서
add-migration "파일이름" : DB 명령어 만들기
update-database: 만들어진 명령어로 데이터베이스 만들기





DB를 생성하기위해서는 마이그레이션 과정을 거쳐야 한다.
마이그레이션 로그가 남아서 이전 DB로 업데이트 할 수 있다는 장점이 있다.




문제해결




참조

0개의 댓글