using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
4. 프로젝트에 Startup.cs파일을 추가해준다.
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Agent
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSignalR();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapDefaultControllerRoute();
endpoints.MapHub<CommandHub>("/chathub");
});
}
}
}
3. CommandHub 클래스도 추가해준다.
using Microsoft.AspNetCore.SignalR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Agent.Hubs
{
public class CommandHub : Hub
{
public override async Task OnConnectedAsync()
{
await base.OnConnectedAsync();
}
}
}
- C# 클래스 - SQL Server 매핑 관계를 만들어서 서로 주고받게 하겠다 => ORM Tool
- ORM Tool 중의 하나가 Entity Framework
- .Net Core 에서 쓰는 Entity Framework Core라고 함
- 다른 ORM Tool 도 많다
8. Nuget에서 Microsoft.EntityFrameworkCore.Design 도 설치해줌
9. 테이블의 구조를 클래스로 만들어준다
[Table("Emp")] //테이블명이 클래스 이름과 다를 경우 지정해준다
public class Employee
{
[Key] //primary key - 꼭 지정해야 하는 것은 아니다
public int Id { get; set; }
public string Name { get; set; }
public DateTime DOB { get; set; }
public decimal Salary { get; set; }
}
10. 데이터베이스의 구조를 클래스로 만들어준다
//1. DB 골격을 만들어주는 Base Class : DBContext
public class MyDbContext : DbContext
{
//2. Database가 Employee 테이블을 가지고 있다
public DbSet<Employee> Employees { get; set; }
//3. 이 Databse가 어떤 서버를 가르키고 있는지 표시
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("data source=(local);Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MyDB");
base.OnConfiguring(optionsBuilder);
}
}
10. 서버를 연결 (보기 -> SQL Server 개체 탐색기)
- 처음에는 이 메뉴가 안 나오는데,
- 보기 > 서버탐색기 > 데이터 연결 > 우클릭 후 "연결 추가" > 아래의 창에서 계속 누르면 뭔가 설치하라고 나오는데, 설치하고 나면
메뉴가 나타난다.
다음과 같이 추가 된다
11. 도구 > Nuget 패키지 관리자 > 패키지 관리자 콘솔
* Add-Migration mig1 명령을 실행한다(mig1은 Migration 이름이다)
추가에 성공하면 우측의 폴더와 cs 파일이 생긴다
- cs 파일은 데이터베이스를 만들고, 테이블을 만들고, 테이블을 수정하는 마이그레이션 과정들을 수행하기 위한, C# 파일을 자동으로 Entity Framework 이 생성하게 된다
12. 실제로 실행하기 해서 데이터베이스를 만들고, 테이블을 만들기 위해서는 새로운 명령을 내린다 (Update-Database)
* 명령 실행시 아래와 같은 에러가 나온다면
* Connection String에 다음을 추가한다
* 그 후에 Update-Database 명령을 수행한 다음 새로고침을 하면 테이블이 생성되었음을 확인할 수 있다
** Entity Framework을 사용해서 insert, select해본다
13. Insert : 다음을 실행한다
MyDbContext db = new MyDbContext();
//Id는 자동생성이므로 입력하지 않는다
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에 반영
db.SaveChanges();
2개의 데이터가 저장되었다
14. Select : 다음을 실행한다
MyDbContext db = new MyDbContext();
var emps = db.Employees.Where(x => x.Id > 1);
foreach(var emp in emps)
{
Console.WriteLine(emp.Id + "," + emp.Name);
}