MY MEMO
[C#] .NET FRAMEWORK - Code First 본문
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 파일을 자동으로 생성
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 |