ASP.NET Core MVC(SQL Server)で何か作るときの基本的なワークフローのメモ。スキャホールディングなし。
プロジェクト作成
visual studioで[ASP.NET Core Web App(Model-View-Controller)でプロジェクトを新規作成。.NETは今日なら7.0だな。
nuget
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
両方ともnuget
モデルを作る
Models/Domain/TestModel.csを作成。普通にクラスです。
namespace TestApp.Models.Domain
{
public class TestModel
{
public Guid Id {get; set;}
public string Name {get; set;}
public string Description {get; set;}
//もし*の関係を作るときは
public ICollection<TestModel2> TestModel2s {get; set;}
//とICollectionを使う
}
}
DbContextクラスを作る
Data/TestAppDbContext.csを作成。普通にクラス。
namespace TestApp.Data
{
public class TestAppDbContext : DbContext
{
//このコンストラクタは継承宣言のDbContextを右クリして、自動で生成させる
public TestAppDbContext(DbContextOptions options) : base(options)
{
}
public DbSet<BlogPost> TestModel { get; set; } //以後はこのようにDbSetのプロパティを追加する
}
}
appsettings.jsonにデータベースへの接続文字列を追加
SQLサーバーの種類によるが、接続文字列を追加。
"AllowedHosts": "*",
"ConnectionStrings": {
"TestAppDbConnectionString": "Server=localhost\\SQLEXPRESS;Database=AppTestDb;Trusted_Connection=True;TrustServerCertificate=Yes"
//LocalDbの場合、Server=(localdb)\\mssqllocaldb
//Database等は自分の好きな名前で
}
DbContextをインジェクション
program.csに以下を追記。
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<TestAppDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("TestAppDbConnectionString"))
);
データベースのマイグレーション、アップデート
パッケージマネージャーコンソールで以下を入力
PM>add-migration "(マイグレーション名)"
PM>update-database
これで成功していればデータベースにAppTestDb、テーブルにTestModelが出来ている。
テーブルを増やすとき
Modelを作成 -> DataContextにDbSet<Model>を追記 -> データベースのマイグレーション -> データベースのアップデート の流れでOK。