- [ToDoList 앱 개발] ASP.NET Core MVC - 2편 DB 및 모델 생성2024년 11월 25일 18시 05분 49초에 업로드 된 글입니다.작성자: Devrun반응형
전 글에 이어서 DB에 데이터를 저장하기 위한 Model을 생성할 것이다.
Model Class 생성하기
우측 Solution 탐색기에서 Models 폴더에 마우스 우클릭 -> Add -> 아래 하단에 Class를 클릭하자
Class를 클릭하면 위와 같은 창이 나온다. 여기서 Class를 선택하고 Name:에 클래스 파일 명을 아래와 같이 작성하자
Name: ToDoItem.cs
그럼 아래와 같이 나올 것이다.
NuGet Package 추가하기
Solution 탐색기에서 ToDoList에 마우스 우클릭 -> Manage NuGet Packages....라는 것을 클릭!
위 사진과 같은 창이 나오는데 여기서 아래 해당하는 것들을 설치해 주자
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
동영상이 아니라 자세한 설치 방법에 대해서는 없지만, 어렵지 않으니 한 번 해보자!
ToDoList.cs Model 생성하기
ToDoList.cs 모델 클래스에 Model을 작성해 보자.
아래는 초기 코드
namespace ToDoList.Models { public class ToDoItem { } }
추가된 코드
using System.ComponentModel.DataAnnotations; namespace ToDoList.Models { public class ToDoItem { [Key] public int Id { get; set; } [Required] [StringLength(50)] public string TaksName { get; set; } public bool isCompleted { get; set; } } }
설명
- using System.ComponentModel.DataAnnotations; ->. NET에서 데이터 주석을 제공하는 네임스페이스를 포함시키는 선언
- [Key] -> 데이터베이스(관계형 Relational Database)에서 Primary Key로 해당 Property를 지정하라는 말이다. (이는 SQL Server 강의에서 볼 수 있다)
- public int Id { get; set } -> 이것이 Key 즉 P.K(Primary Key)가 될 속성
- [Required] -> 데이터베이스에서 NOT NULL, 반드시 글자가 있어야만 저장되는 것을 말한다.
- [StringLength(50)] -> TaskName의 최대 글자 수를 지정
- public string TaskName {get; set;} -> 앞으로 우리가 작성하는 Task가 여기에 포함
- public bool isCompleted { get; set;} -> Task가 완료되면 true, 아니면 false로 저장될 공간 그러나 DB에서는 0이나 1로 지정될 것이다.
위에서 작성한 것과 같이 설명은 끝이다. 이러면 모든 Model이 생성된 것이다.
appsetting.json에 DB 연결 스트링을 작성하기
appsettings.json은 파일을 열게 되면 위와 같은 정보가 작성되어 있다. 우리는 여이게 아래 코드를 추가할 것이다.
"ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=ToDoApp;Trusted_Connection=True;MultipleActiveResultSets=true" }
위 코드를 json 파일에 추가하자
최종 추가된 json 파일 코드
{ "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=ToDoApp;Trusted_Connection=True;MultipleActiveResultSets=true" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
우리는 특정 server에서 데이터를 저장할 것이 아닌 local에서 저장할 것이기 때문에, 로컬 DB로 설정했다.
DB Context 생성하기
using Microsoft.EntityFrameworkCore; using YourNamespace.Models; namespace YourNamespace.Data { public class AppDbContext : DbContext { public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } public DbSet<ToDoItem> ToDoItems { get; set; } } }
위 코드는 DbContext를 생성하기 위한 코드이다.
Solution Explorer에서 ToDoList 폴더 안에 Data폴더를 생성하고 AppDbContext.cs 파일을 추가하자
Data폴더 안에 AppDbContext.cs라는 클래스를 추가하자
잘 따라왔다면 아래와 같은 코드를 가진 클래스가 생성되었을 것이다.
namespace ToDoList.Data { public class AppDbContext { } }
이제 여기에 아래 코드를 추가하자
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } public DbSet<ToDoItem> ToDoItems { get; set; }
밑에 내용을 보지 말고 한 번 직접 추가해 보고 비교해 보자!
최종 완성 코드
using Microsoft.EntityFrameworkCore; using ToDoList.Models; namespace ToDoList.Data { public class AppDbContext : DbContext { public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } public DbSet<ToDoItem> ToDoItems { get; set; } } }
위와 같이 진행했다면 아주 잘한 것이다.
이제 한 단계가 남았다. 무엇이냐? Program.cs에 또 추가할 것이 있다.
Solution Explorer -> ToDoList -> Program.cs 파일을 클릭해서 열자
var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); var app = builder.Build(); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();
Program.cs파일을 열게 되면 위와 같은 코드가 나오게 되는데, 여기에 우리는 아래 코드를 추가할 것이다.
builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
위 코드는 무엇인가요?
우리가 전에 Connection String을 appsettings.json 파일에 선언했다. 그러면 선언한 connection string은 사용되고 있는가? 아니다. 즉 이 프로그램에서 json에 선언한 connection string을 사용하도록 설정해야 한다. 그렇기 때문에 위 코드를 program.cs 파일에 추가하는 것이다.
어디에 추가해야 할지 한 번 생각해 보고 아래 전체 코드를 보자
using Microsoft.EntityFrameworkCore; using ToDoList.Data; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); //Added DbContext builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); var app = builder.Build(); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();
위 코드는 최종 완성된 코드이다.
이제 마이그레이션을 해주어야 한다.
Add-Migration InitialCreate Update-Database
위 두 커맨드를 기억하고 Package Manager Console을 열 것이다.
Visual Studio (VS) -> Tools -> NuGet Package Manager -> Package Manager Console을 실행하자
성공하면 위와 같은 창이 나올 것이다.
이제 업데이트 DB도 해주자
생각보다 긴 줄이 나오고 위와 같은 Message가 표시될 것이며 성공할 것이다.
최종적으로 보면 위와 같이 SQL server object explorer에서 위와 동일하게 표시될 것이다.
이 글을 작성하기 전에 사전에 만들어 보았던 것에 대한 테이블이 나에게는 포함되어 있다. 하지만 여러분은 없을 것이다. 이제 다음 강의에서 보도록 하자!
반응형'Tutorial > ToDoList - ASP.NET Core' 카테고리의 다른 글
[ToDoList 앱 개발] ASP.NET Core MVC - 최종 데이터 출력 (0) 2024.11.26 [ToDoList 앱 개발] ASP.NET Core MVC - 4편 데이터 입력 (0) 2024.11.26 [ToDoList 앱 개발] ASP.NET Core MVC - 3편 Form을 제작해보자 (0) 2024.11.26 [ToDoList 앱 개발] ASP.NET Core MVC - 1편 프로젝트를 생성하자 (0) 2024.11.25 다음글이 없습니다.이전글이 없습니다.댓글