I am maker

ASP.NET CORE MVC EntityFramework 게시판만들기-3. 컨트롤러 및 뷰 만들기 본문

ASP.NET Core

ASP.NET CORE MVC EntityFramework 게시판만들기-3. 컨트롤러 및 뷰 만들기

코딩하는고릴라 2017. 5. 2. 15:49
반응형

목표

-CRUD 기능.

 (글쓰기, 보기, 수정, 리스트)



개요

1. Scaffold 기능으로 CRUD 컨트롤러 및 뷰 생성하기

2. CMD창을 이용해 마이그레이션 및 DB업데이트



1. Scaffold 기능으로 CRUD 컨트롤러 및 뷰 생성하기

1-1. 컨트롤러를 추가해줍니다.



1-2. MVC Controller with views, using Entity Framework를 선택하고 Add버튼을 누릅니다.


1-3. 이전시간에 만들었던 Model Class인 board를 선택해주고 Data context 에는 ApplicationDbContext를 선택해줍니다.

*.ApplicationDbContext가 없다면 프로젝트 만들 때 인증정보를 Individual Authorization으로 선택했는지 확인하세요.


Add버튼을 누르면 자동으로 Controller와 View가 추가됩니다.



F5를 눌러 나오는 페이지 끝에 /Boards 를 붙여줍니다.

그러면 아래와 같은 에러 페이지가 나옵니다.


이 내용은 뭐냐?

모델이랑 다 만들긴 했는데, 실제 데이터베이스에 적용이 안되어있어다는 얘기입니다.

migration은

"이주, 이동, 옮기기"이런 뜻인데요.

현재 적용된 모델을 DB로 옮길 수 있게 DB조작코드를 생성해줍니다.


database update는 migration한 파일을 바탕으로 실제 database에 업데이트해줍니다.


즉 작업순서는 항상 이렇게되니 기억하세요.

모델 변동 => migrations add => database update

나중에도 다룰 내용이지만, 만약 현재 변동된 모델이 잘못됐다면?
database를 이전 migrations 으로 업데이트하고 migrations을 제거(remove)해주면됩니다.


위에 내용에서는 2가지 방법을 말해주는데요, 하나는 VisualStudio에 PackageManager Console을 이용하는 방법이고 하나는 윈도우즈 명령 프롬프트(cmd)를 이용하는 방법입니다.


저는 후자를 선호해요. 나뉘긴하는데 명령프롬프트를 자주쓰는터라 ㅎㅎ.

후자로 설명하겠습니다.


2. CMD창을 이용해 마이그레이션 및 DB업데이트

2-1. 탐색기에서 프로젝트가 있는 경로로 갑니다. 솔루션 우클릭하여 Open Folder in File Explorer을 누르면 윈도우 탐색기에서 해당 경로로갑니다.



2-2. Board cmd 창을 엽니다. 이때 그냥 우클릭하면 안되고, Shift+우클릭 하면 여기서 명령 창 열기가 보입니다.


2-3. migration을 추가해줍니다. 저는 BoardInit이라고 했는데 알아서 변경사항이나 추가사항이나 기준을 정하셔서 하면 될 것같네요.


마이그레이션을 추가하면 아래와 같이 timestamp가 붙은 클래스가 생성됩니다. 저 안에 db 스키마를 변경하는 코드가 들어있어요.


2-4. 데이터베이스를 업데이트해줍니다. 이 때 프로젝트는 실행(F5)상태이면 안됩니다.(빌드를 수행하므로)

데이터 모델을 실수로 잘못만들었다거나 할 때는

특정 버전으로 업데이트해 돌아가면됩니다.

하는방법은 프로젝트에 Data/Migrations에 있는 파일명을 업데이트 명령어 뒤에 붙이시면됩니다.

예를들어서 CreateIdentitySchema로 돌아가고싶다면?

dotnet ef database update 00000000000000_CreateIdentitySchema
라고 치시면됩니다.


visual studio로 돌아와서 Sql Server Object Explorer를 엽니다. 

없다면 상단 View메뉴에서 추가해주세요.

열면 아래와같이 저희 프로젝트 데이터베이스에 Board가 추가된 걸 보실 수 있습니다.




이제 F5를 눌러 프로젝트를 실행하고 url 경로 끝에 boards를 치고 브라우져를 봅니다.

boards는 BoardsController에서 앞부분 boards를 의미합니다.

이제 게시판 CRUD가 끝났습니다.

각 기능들을 테스트해보세요.

다음 시간에는 부족한 점을 다듬어보겠습니다.




반응형