yutabee / SampleRazorApp

0 stars 0 forks source link

Entity Frameworkを利用してPersonClassのCRUD処理を実装する #14

Open yutabee opened 1 year ago

yutabee commented 1 year ago

Entity Frameworkとは

Modelが基本

データコンテキスト

コードファースト

C#でModelのソースコードを用意すれば、コードベースでテーブルを作成できる。

スキャフォールディング

Modelをもとに、基本的なCRUD処理を自動生成する

FormとModelのバインド

yutabee commented 1 year ago

RazorPageAppのデータベース設定

  1. データベースプロバイダのモジュールインストール
  2. モデルクラスの作成
  3. マイグレーションとデータベースの更新
  4. スキャフォールディングによるCRUD生成

データベースプロバイダとは

データベースに接続したり、クエリを実行するためのパッケージのこと。 接続するデータベースによって異なる。 https://learn.microsoft.com/ja-jp/ef/core/providers/?tabs=vs

マイグレーションとデータベースのアップデート

パッケージマネージャーコンソールから以下コマンドを実行

Add-Migration Initial

マイグレーションファイルを生成する。Initialはマイグレーションにつける名前。 =>2023/2/19_Initial.csというマイグレーションファイルがMigrationsフォルダに生成される。

Update-Database

作成されたマイグレーションファイルをもとにデータベースを更新する

yutabee commented 1 year ago

Program.csの処理

データベースの設定

builder.Services.AddDbContext<SampleRazorAppContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("SampleRazorAppContext") ?? throw new InvalidOperationException("Connection string 'SampleRazorAppContext' not found.")));
GetConnectionString("SampleRazorAppContext") 

データベースコンテキストのデフォルトで設定されているクラスが指定される。

DbContextOptionsBuilder

AddDbContextの引数に設定されているoptionsは、DbContextOptionsBuilderというクラスのインスタンス。 DbContextOptionsというクラスを生成するためのビルダークラス。

このクラスをもとにデータベースの接続に関する設定をおこない、データベースコンテキストを追加している。

yutabee commented 1 year ago

appsettings.json

"ConnectionStrings": {
    "SampleRazorAppContext": "Server=(localdb)\\mssqllocaldb;
Database=SampleRaz~~~~~~~~~~~~~~~~~略;
Trusted_Connection=True;MultipleActiveResultSets=true"
  }

接続文字列

yutabee commented 1 year ago

ServiceDEpendencies.json

{
  "dependencies": {
    "mssql1": {
      "type": "mssql",
      "connectionId": "ConnectionStrings:SampleRazorAppContext"
    }
  }
}