okinawa

勉強メモ

【.Net Core5】DBファーストでモデルクラス作成からCRUD機能の作成までの流れ

参考サイト

https://mebee.info/2021/02/14/post-28952/  

手順0:DBの作成

テーブル作って、外部キーやら自動採番やらの設定をする。

SSMSでの自動採番の設定はテーブル右クリック→デザイン→列名クリック→列のプロパティでIDENTITYの指定を「はい」にする。

外部キーは列名を右クリックでリレーションシップから。

手順1:SQLサーバとの接続

ここからの操作は全部VisualStudio。

1,ツール→データベースへの接続→MicrosoftSQLServer→続行

2,サーバー名とデータベース名を入力→テスト接続

サーバー名とデータベース名はSSMSでデータベースを右クリック→接続のプロパティで見れる。

3,サーバーエクスプローラを開いて接続したDBを右クリック→プロパティで接続文字列をメモっておく。

手順2:スキャフォールディング

1,Nugetでパッケージインストール

2,プロジェクトを1回ビルドする。

3,dotnetをインストール

PMCでもパワーシェルでもどっちでも良い。

dotnet tool install --global dotnet-ef

4,パワーシェルでscafoldコマンド実行。

プロジェクト名を右クリック→ターミナルで開く、でプロジェクトディレクトリのパワーシェルが開く。

dotnet ef dbcontext scaffold "接続文字列" Microsoft.EntityFrameworkCore.SqlServer -o Models

  接続文字列の調べ方↓

dodosu.hatenablog.jp

5,Modelsフォルダの中身確認

モデルクラスとコンテキストクラスが出来てたら成功。

6,Controllersとビューの作成

Controllersフォルダ右クリック→追加→コントローラ

→EntityFrameworkを使用したビューがあるMVCコントローラ

→先程作成した、モデルクラスとコンテキストを選択する。

→追加。まだ終わりではないのです。

手順3:Startup.csとappsettings.jsonとコンテキストクラスに追記。

1,Startup.csに追記

なぜか依存性の注入がされないので追記。

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();

            // 追記部分。
            services.AddDbContext<TestDBContext>(Options => Options.UseSqlServer(Configuration.GetConnectionString("TestDBContext")));

        }

2,appsettings.jsonに追記。

こちらもなぜか接続文字列が定義されないので追記。

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  // 以下、追記部分
  "ConnectionStrings": {
    "TestDBContext": "接続文字列"
  }
}

3,コンテキストクラスに追記。

なぜか主キーが設定されないので追記。

           modelBuilder.Entity<Account>(entity =>
            {
                entity.ToTable("account");

                // 主キーの指定
                entity.HasKey(e => e.AccountId);

                entity.Property(e => e.AccountId).HasColumnName("account_id");
          }

docs.microsoft.com