.NET Core – csharpstudy 유튜브 강의 정리
- .NET Core 시작하기 – 설치, 빌드, 실행 방법
- .NET Core 기초 – GUI 프로그래밍 시작하기
- .NET Core – Entity Framework Core 기초
- ASP.NET Core MVC 시작하기
.NET Core 시작하기 – 설치, 빌드, 실행 방법
.NET Core SDK 설치
https://dotnet.microsoft.com/download/dotnet-core
프로젝트 폴더 만들기
md Console1
템플릿 목록 보기
dotnet new –list
콘솔 프로젝트 생성
dotnet new console
노트패드로 소스코드 보기
notepad Program.cs
빌드하기
dotnet build
실행하기
dotnet run
실제 코드는 dll 파일이므로 실행할 수 있다.
dotnet Console1.dll
닷넷코어 런타임을 포함해서 win-64용으로 빌드하기
Console1 폴더로 이동한다
dotnet build –runtime win-x64
닷넷코어의 장점은 크로스 플랫폼에서 사용할 수 있다는 점이다.
리눅스용 x64로 빌드하기 (–runtime 또는 -r)
dotnet build -r linux-x64
맥용으로 x64로 빌드하기
dotnet build -r osx-x64
.NET Core 기초 – GUI 프로그래밍 시작하기
WPF : 정상 지원
WinForms
– Form Designer : VS 2019 v16.5 에서 지원 예정
Windows Only
.NET Framework 4.8 이 마지막이 될 것이다.
WPF 프로젝트 만들기
dotnet new wpf
WinForms 프로젝트 만들기
dotnet new winforms
다른 컴퓨터에 사용할 수 있도록 publish 하기
Folder 선택
Configuration : Release 클릭
Deployment Mode : 프레임워크를 포함할 것인지 여부
Publish 버튼 클릭
.NET Core – Entity Framework Core 기초
데이터베이스에 액세스하는 프레임워크
EF Core
ORM 툴 – Object-Relational Mapping (C# 클래스와 SQL 을 매핑)
누겟 패키지 3개를 다운로드 해야함
누겟 패키지 매니저에서 entity framework 로 검색
- Microsoft.EntityFrameworkCore.SqlServer
- Microsoft.EntityFrameworkCore.Design
- Microsoft.EntityFrameworkCore.Tools
폴더 만들기
Model
Model 폴더에 클래스 만들기
Employee.cs
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace EFTest.Models
{
[Table("Employee")] // 테이블 이름이 다를 때
public class Employee
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public DateTime DOB { get; set; }
public decimal Salary { get; set; }
}
}
Model 폴더에 클래스 만들기
MyDbContext
using Microsoft.EntityFrameworkCore;
namespace EFTest.Models
{
class MyDbContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// (local) 또는 .
optionsBuilder.UseSqlServer(@"Data Source=(local);Initial Catalog=MyDB;Integrated Security=SSPI");
}
public DbSet<Employee> Employees { get; set; }
}
}
Tools – 누겟 패키지 매니저 – 패키지 매니저 콘솔
Add-Migration mig1 // 마이그레이션 관련 파일 만들기
Update-Database // 데이터베이스 업데이트
Insert 와 Select
using EFTest.Models;
using System;
using System.Linq;
namespace EFTest
{
class Program
{
static void Main(string[] args)
{
// insert
MyDbContext db = new MyDbContext();
Employee emp = new Employee
{
Name = "Tom",
DOB = new DateTime(1999, 5, 10),
Salary = 50000
};
db.Employees.Add(emp);
Employee emp2 = new Employee
{
Name = "Jack",
DOB = new DateTime(1999, 5, 10),
Salary = 50000
};
db.Employees.Add(emp2);
db.SaveChanges();
// Select
var emps = db.Employees.Where(p => p.Id >= 1);
foreach (var item in emps)
{
Console.WriteLine($"{item.Id}, {item.Name}");
}
}
}
}
ASP.NET Core MVC 시작하기
프로젝트 추가
ASP .NET Core Web Application
Web Application (Model-View-Controller)
Controller
– 사용자의 리퀘스트를 받아서 모델을 불러와서 뷰를 반환
localhost:port/home/index
HomeController (Home 이 URL 부분)
public IActionResult Index() (Index가 URL 부분)
index() 의 뷰를 보고 싶다면
Index() 함수에서 오른쪽 버튼 누루고 Go To View
전체 템플릿 소스 파일
Views/_ViewStart.cshtml 에서 _Layout 이 템플릿 파일 이름 (_Layout.cshtml)
Views/Shared/_Layout.cshtml
@RenderBody() // 이 부분에 Index.cshtml 의 부분 소스가 들어감
Razor syntax
@{ } // C# 코드가 들어감 // Razor syntax
@변수 // 한줄일 때
# Index.cshtml
@{
ViewData["Title"] = "Home Page";
string str = "Welcome";
}
<div class="text-center">
<h1 class="display-4">@str</h1>
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
@for (int i = 0; i < 10; i++)
{
<p>@i</p>
}
</div>
저자 리스트 메뉴 추가하기
# _Layout.cshtml
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="AuthorList">저자 리스트</a>
</li>
# HomeController.cshtml
public IActionResult AuthorList()
{
return View();
}
# AuthorList 의 뷰 추가
AuthorList() 메서드 부분에서 오른쪽 버튼 누루고 Add View 선택 -> Razor View -> 기본값 선택
Models 폴더에 클래스 파일 생성
Author.cs
public class Author
{
public string name { get; set; }
public string address { get; set; }
}
# HomeController.cs
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
private readonly IWebHostEnvironment webHostEnvironment;
public HomeController(ILogger<HomeController> logger, IWebHostEnvironment webHostEnvironment)
{
_logger = logger;
this.webHostEnvironment = webHostEnvironment;
}
...
public IActionResult AuthorList()
{
string path = Path.Combine(webHostEnvironment.ContentRootPath, "authors.txt");
string jsonStr = System.IO.File.ReadAllText(path);
List<Author> authors = JsonSerializer.Deserialize<List<Author>>(jsonStr);
return View(authors);
}
# View 의 AuthorList.cshtml
@model List<Author>
@{
ViewData["Title"] = "AuthorList";
}
<h1>저자리스트</h1>
<table class="table">
@foreach (var author in Model)
{
<tr>
<td>
@author.name
</td>
<td>@author.address</td>
</tr>
}
</table>
# authors.txt
[
{
"name": "1번",
"address": "서울 Hello World"
},
{
"name": "2번",
"address": "대전 Hello World"
},
{
"name": "3번",
"address": "대구 Hello World"
},
{
"name": "4번",
"address": "부산 Hello World"
},
{
"name": "5번",
"address": "광주 Hello World"
},
{
"name": "6번",
"address": "인천 Hello World"
},
{
"name": "7번",
"address": "울산 Hello World"
}
]