LoginSignup
0
2

More than 3 years have passed since last update.

ASP.NET Core MVC 3.1 でスキャフォールディングを試した時の備忘録

Last updated at Posted at 2020-04-18

はじめに

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

参考

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2