ASP.NET Core MVC 3.1에서 스캐 폴딩을 시도했을 때의 비망록

소개



ASP.NET Core MVC의 스캐 폴딩을 시도했을 때의 비망록입니다.

목표



연락처북 앱ContactBook


환경


  • ASP.NET Core MVC 3.1
  • MySQL 8.0
  • Mac Catalina
  • Visual Studio Code

  • 준비



    아래와 같이 ASP.NET Core나 EntityFramework등을 인스톨 해 둡니다.
    필요한 경우 MySQL 8.0을 homebrew로 설치합니다.

    ASP.NET Core 3.1 SDK 설치



    아래에서 ASP.NET Core SDK를 다운로드하여 Mac에 설치합니다.
    Download .NET Core 3.1

    EntityFramwork, aspnet-codegenerator 설치



    터미널
    dotnet tool install --global dotnet-ef
    dotnet tool install --global dotnet-aspnet-codegenerator
    

    절차



    절차 자세한 내용은 Microsoft Docs에 개발 환경별로 나열되어 있습니다.

    MVC 프로젝트 신규 작성



    Visual Studio Code 터미널에서 MVC 프로젝트를 만듭니다.

    터미널
    mkdir ContactBook
    cd ContactBook
    dontnet new mvc
    

    NuGet으로 패키지 설치



    EntityFramework 및 스캐폴딩에 필요한 패키지를 설치합니다.

    터미널
    dotnet add package Microsoft.EntityFrameworkCore
    dotnet add package Microsoft.EntityFrameworkCore.Design
    dotnet add package Microsoft.EntityFrameworkCore.Tools
    dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
    dotnet add package Microsoft.SqlServer
    dotnet add package Pomelo.EntityFrameworkCore.MySql
    

    모델 만들기



    연락처의 모델을 만듭니다.

    ContactBook/Models/Contact.cs
    namespace ContactBook.Models
    {
        public class Contact
        {
            public int Id { get; set; }
            public string FirstName { get; set; }
            public string LastName { get; set; }
            public string Email { get; set; }
            public string Phone { get; set; }
            public string Address { get; set; }
        }
    }
    

    DB 컨텍스트 만들기



    모델과 DB를 연결하는 DB 컨텍스트를 만듭니다.

    ContactBook/Models/ContactBookContext.cs
    using Microsoft.EntityFrameworkCore;
    
    namespace ContactBook.Models
    {
        public class ContactBookContext : DbContext
        {
            public ContactBookContext(DbContextOptions<ContactBookContext> options)
                : base(options) { }
    
            public DbSet<Contact> Contact { get; set; }
        }
    }
    

    DB 컨텍스트 등록



    Startup.cs에 DB 컨텍스트를 등록합니다.
    MySQL 연결 문자열을 AppSettings로 설정했습니다.

    ContactBook/Startup.cs
    using ContactBook.Models;
    using Microsoft.EntityFrameworkCore;
    using Pomelo.EntityFrameworkCore.MySql.Infrastructure;
    using Pomelo.EntityFrameworkCore.MySql.Storage;
    

    ContactBook/Startup.cs
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews();
    
        services.AddDbContext<ContactContext>(options =>
            options.UseMySql(Configuration.GetConnectionString("ContactBook"), mySqlOptions => mySqlOptions
            .ServerVersion(new ServerVersion(new Version(8, 0, 19), ServerType.MySql))));
    }
    

    ContactBook/appsettings.json
    {
      "ConnectionStrings": {
        "ContactBook": "Server=localhost;Database=ContactBook;User=root;Password=****************"
      },
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Warning",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "AllowedHosts": "*"
    }
    

    마이그레이션



    데이터베이스를 만듭니다.

    터미널
    dotnet ef migrations add InitialCreate;
    dotnet ef database update
    

    스캐폴딩



    asp-condegenerator에서 컨트롤러를 만듭니다.
    그런 다음 기본 뷰도 만듭니다.

    터미널
    dotnet aspnet-codegenerator controller -name ContactsController -m Contact -dc ContactBookContext -ourDir Controllers -udl -script
    

    디버그 실행



    디버깅을 실행하면 브라우저가 시작되므로 아래 URL에 액세스합니다.
    https://localhost:5001/Contacts

    참고


  • Mac에서 ASP.NET Core + EntityFramework Core + MySQL 개발을 수행하는 방법
  • Microsoft Docs - ASP.NET Core MVC 개요
  • Microsoft Docs - dotnet aspnet-codegenerator
  • 좋은 웹페이지 즐겨찾기