参考サイト
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"); }