はじめに
ASP.NET Core MVC のスキャフォールディングを試した時の備忘録です。
目標
環境
- 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
モデルを作成
連絡先のモデルを作成します。
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コンテキストを作成します。
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に設定しました。
using ContactBook.Models;
using Microsoft.EntityFrameworkCore;
using Pomelo.EntityFrameworkCore.MySql.Infrastructure;
using Pomelo.EntityFrameworkCore.MySql.Storage;
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))));
}
{
"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