본문 바로가기
Entity Framework Core

ASP.NET Core] Entity Framework Core - 1. MSSQL DB 연동

by Fastlane 2021. 12. 24.
728x90
반응형

1. Models 폴더 하위에 Category.cs 추가 

prop입력 후 tab키 두번 치면 public int MyProperty { get; set; }가 자동 입력된다. 

Id는 자동생성되는 pk이고, Name은 NOTNULL이므로 아래와 같이 DataAnnocation을 설정한다. 

using System.ComponentModel.DataAnnotations;

namespace BulkyBook.Models
{
    public class Category
    {
        [Key]
        public int Id { get; set; }
        [Required]
        public string Name { get; set; }
        public int DisplayOrder { get; set; }
        public DateTime CreatedDatetime { get; set; } = DateTime.Now;   
    }
}

2. appsetting.json파일 connection string 설정

  "ConnectionStrings": {
    "DefaultConnection": "Server=;database=;uid=;pwd=;"
  }

 

appsetting.json에 암호 및 기타 중요한 데이터를 저장하는 것은 보안에 취약하다, 

Secret Manager를 사용해보자 

참조문서 : https://bigexecution.tistory.com/101

 

ASP.NET Core] 개발환경에서 Secret Manager(secrets.json) 사용

appSetting.json에 암호 및 기타 중요한 데이터를 저장하지 말아야 하는 이유 database connection string, third party service credentials, encryption key등을 asp.net에서는 web.config파일에 asp.net core에..

bigexecution.tistory.com

3. DBContext 설정, Entity Framework Core, SqlServer Package 설치

DB context를 사용해 database와 연결할 수 있다. 

BulkyBook\Data\ApplicationDbContext.cs

using BulkyBook.Models;
using Microsoft.EntityFrameworkCore;

namespace BulkyBook.Data
{
    public class ApplicationDbContext :DbContext
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
        {
           
        }

        public DbSet<Category> Categories { get; set; }
    }
}

Context에 DbSet을 추가하면 EF Core의 모델에 포함되어 DB간 Entity Instance를 읽고 쓸 수 있으며, Migration을 통해 테이블을 만들 수 있다. 

 

Service에 DbContext 종속성 주입

Program.cs

builder.Services.AddControllersWithViews(); 
builder.Services.AddDbContext<ApplicationDbContext>(option => option.UseSqlServer(
    builder.Configuration.GetConnectionString("DefaultConnection")
    ));

var app = builder.Build();

4. DB에 Categories 테이블 생성 후, Controller에서 Categories 테이블 데이터리스트 가져오기 

 

_db.Categories.ToList(); db에 접근 후 원하는 DbSet을 선택하고 ToList()를 하면 모든 레코드들이 list형태로 반환된다. 

Select 쿼리를 작성할 필요가 없다. 

using BulkyBook.Data;
using BulkyBook.Models;
using Microsoft.AspNetCore.Mvc;

namespace BulkyBook.Controllers
{
    public class CategoryController : Controller
    {
        private readonly ApplicationDbContext _db;

        public CategoryController(ApplicationDbContext db)
        {
            _db = db;
        }

        public IActionResult Index()
        {
            IEnumerable<Category> objCategoryList = _db.Categories.ToList();
            return View(objCategoryList);
        }
    }
}

데이터 연동 확인 완료 

728x90
반응형

댓글