参考サイト
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
接続文字列の調べ方↓
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");
}