MY MEMO

[C#] .NET FRAMEWORK - Code First 본문

STUDYING/C#

[C#] .NET FRAMEWORK - Code First

l_j_yeon 2018. 3. 27. 11:59

URL : https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/


+) Code First vs Database First

Code First

: class로 데이터를 미리 만들어 놓은 후에 실행을 한 뒤 (ex)add-migration) database를 생성함


Database First (ex) Dapper)

: 다른 서버 or Local에 미리 테이블을 만들어 놓고 만든 테이블이나 데이터베이스를 가져와서 사용


<.NET FRAMEWORK 시작하기 - HelloWorld 파일 실행해보기>


1. 프로젝트 생성하기


1) 파일 -> 새 프로젝트 -> ASP.NET 웹 응용 프로그램(.NET Framework)


2) 폴더 구조


- App_Data

: Database에서 DB를 생성하고 테이블을 생성하면 이곳에서 mdf파일(MSSQL)로 저장


- App_Start

RouteConfig.cs : url을 지정


- Model / Controller / View

: MVC 패턴을 따르고 있음


- Web.config

: Database 생성후 LocalDB와 연동할 때 필요


- 이외의 파일

: default로 bootstrap을 이용하기 때문에 bootstrap에서 사용될 css, javascript 파일이 대다수


2. HelloWorld 예제 파일 생성해보기


Controller -> 추가 -> MVC5 컨트롤러 - 비어있음

: 자동으로 View까지 생성!


Controllers/HelloWorldController.cs

- HelloWorld Controller : HelloWorld 폴더에 있는 파일을 제어

- HelloWorld 안에 있는 함수 이름 = HelloWorld 폴더 아래의 cshtml 파일의 이름

- ActionResult -> return View()인데 View의 이름을 지정하지 않는 이유 -> 함수의 이름이 cshtml의 파일 이름

- 함수에 parameter를 설정하는 것은 get 형식일 때 "/HelloWorld/Welcome?name=Zoe&numTimes=4" 뒤에 들어오는 변수를 담음

(단 get으로 받아올 때의 변수 이름과 parameter의 이름이 같아야함)

- ViewBag : 해당 View에서 뿌려줄 데이터를 담음 


Views/HelloWorld/Index.cshtml

- _Layout은 cshtml의 파일을 공통으로 가져오는 것

예를 들어 디자인은 같은데 내용만 바뀌어야할 경우 _Layout에는 디자인을 내용은 다른 cshtml의 내용을 가져옴

- ViewBag을 이용하여 controller에서 정의했던 변수를 가져옴


Views/HelloWorld/Welcome.cshtml


<.NET FRAMEWORK 시작하기 - Database 연동해보기>


1. Entity Framework Nuget Package 설치하기

URL : https://www.nuget.org/packages/EntityFramework/


도구 -> NuGet 패키지 관리자 -> 패키지 관리자 콘솔 -> Install-Package EntityFramework -Version 6.2.0 


2. Model 생성하기


1) Models -> 추가 -> 클래스 파일 생성하기

(저는 예제와 같이 이름은 Movie로 지정하였습니다!)

- class를 이용해서 Table의 column 명 & validation (조건) 을 입력

- DbContext를 이용해서 Db를 생성 후 Db명 입력


2) Web.config 수정


3) 도구 -> NuGet 패키지 관리자 -> 패키지 관리자 콘솔

Enable-Migrations -ContextTypeName 프로젝트이름.Models.MovieDBContext

-> Migrations폴더에 Configuration.cs 생성!


+) Database 수정할 때마다

add-migration '새로 생성될 Migrations 파일 이름'

update-database


4) Entity Framework를 사용하며 뷰가 포함된 MVC 5 컨트롤러

-> 이 option을 선택하면 View 폴더 아래의 새로 생성된 폴더 밑에 Create, Delete, Details, Edit, Index 파일을 자동으로 생성


Controllers/MoviesController.cs
- MovieDbcontext의 값을 가져옴 (DB를 가져옴)

- get 방식
1) ?를 이용해서 변수의 값을 가져옴


2) url을 생성한 후 변수의 값을 가져옴 


App_Start/RouteConfig.cs (아래를 추가)


+) Views/Movies안의 cshtml 중 한개

Views/Movies/Delete.cshtml


+) Entity Framework 6 (Code First) - 간단하게


<프로젝트 생성 후 간단한 기능 구현해보기>


1. Entity Framework 설치 

도구 -> NuGet 패키지 관리자 -> 패키지 관리자 콘솔

Install-Package EntityFramework


2. Paging을 위해 PagedList 설치

도구 -> NuGet 패키지 관리자 -> 패키지 관리자 콘솔

Install-Package PagedList.Mvc


3. 코드를 보고 대충 감잡기


Controllers/StudentController.cs

- Index를 살짝 수정했는데

sortOrder를 이용해서 현재 들어오는 데이터의 값을 이용해서 sorting을 해준다


아래에 보면 pageSize가 있는데 

현재 pageNumber가 즉 page가 null이면 1을 아니면 page를 넣어주는

(page ?? 1)을 사용했다


DAL/SchoolContext.cs

- 현재 만들고 싶은 테이블을 모아놓은 곳!


DAL/SchoolInitializer.cs

- DB를 만들고 초기값으로 넣은 데이터!


아래는 테이블&열

class를 가져온 것을 보고 table간의 관계를 알 수 있다.


Models/Course.cs


Models/Enrollment.cs


Models/Student.cs


당연히 모든걸 생성한 뒤에는

1) 초기에는

Enable-Migrations -ContextTypeName 프로젝트이름.DAL.SchoolContext


2) 수정한 후에는

add-migration 파일이름

update-database


Web.config


Views/Students/Index.cshtml

- Index.cshtml에서 볼 것은 아래 PagedList를 이용한 것이다


++) Logger를 생성하기 위한 폴더를 따로 만들 수도 있다

Logging/ILogger.cs


Logging/Logger.cs


'STUDYING > C#' 카테고리의 다른 글

[C#] .NET FRAMEWORK - Database First  (0) 2018.03.27
[C#] .NET FRAMEWORK - .net core  (0) 2018.03.23
[C#] C# 기본 문법 - 2  (0) 2018.03.22
[C#] C# 기본 문법 - 1  (0) 2018.03.22
[WPF] 기능 모음  (0) 2017.09.01
Comments