.net MVC でプロジェクトを作成してSQLServerの既存DB・テーブルと接続するまで

ASP.net Core MVCのプロジェクトを新規作成して、
SQLServerデータベースとの接続

バージョンは.NET 5.0です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311177/85a82b57-9a1f-7ddf-412a-188c5c4648eb.png)


###プロジェクトの新規作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311177/4738011e-07a0-80bf-2c8e-6ef5b3cec720.png)




###NuGetでインストール
EntityFrameworkCore
EntityFrameworkCore.SqlServer
EntityFrameworkCore.Tools

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311177/4916b053-b978-d737-a369-af588df1d499.png)



###データベースへの接続文字列を追記する（appsettings.json）
参考：https://docs.microsoft.com/ja-jp/ef/core/cli/powershell

```appsettings.json
{
  "ConnectionStrings": {
    "DefaultConnection": "Data Source=DBSreverName;Initial Catalog=DBName;Integrated Security=True"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": 
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/346533/f15afd58-f324-1f77-c73e-d4dfd9ba4186.png)


###パッケージマネージャーコンソールを開く

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311177/581c85c2-31aa-f25b-8e98-83e530604151.png)

```hoge.cs
PM> Scaffold-DbContext Name=DefaultConnection Microsoft.EntityFrameworkCore.SqlServer -Tables "Blog"

```
###Modelが出来上がる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311177/e24763af-7a80-0026-fbb3-f030ae10b305.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311177/5f50f146-9173-ee63-ff37-49739003b554.png)

###Startup.csにサービスを登録する。
参考：https://docs.microsoft.com/ja-jp/ef/core/dbcontext-configuration/#dbcontext-in-dependency-injection-for-aspnet-core

```Startup.cs
using Microsoft.EntityFrameworkCore;

//---省略---


        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
            services.AddDbContext<hogeContext>(option => option.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

        }
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311177/f73f76ff-5d1d-accf-ab2a-2418ba40296f.png)


###MVCコントローラーの追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311177/7da61bd2-5668-986c-9dc8-6c5899328cfd.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311177/c4b04a1d-662b-8218-8813-b0769fbd3d0b.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311177/cd25fc98-ab8e-9946-f945-02fbb5e032fa.png)


成功するとコントローラーとビューが追加されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311177/378802d1-7aee-92c3-d5aa-b0ddbaeb27bb.png)

###コントローラー
下記の赤枠部分でテーブルを読み込んで、ビューにリターンしている
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311177/3bffb183-7e6e-50aa-c268-cabbcc11872a.png)


###ビュー（index.cshtml)
コントローラーでリターンされると、ビューの1行目「@model IEnumerable---省略---」で受け取り、foreachでループ処理されている。

今回はなぜか表示部分が未完成で自動生成されていたので、下部の赤枠部分は手動で作成している。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311177/2c2ec576-962a-3f20-8f27-b32f40f2270f.png)

###デバッグ実行して確認する
デバッグで実行してモデル名に[s]をつけることで確認できる

https://ホーム/モデル名s


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2311177/97cf8a40-efbe-f8c1-756c-4cc933460271.png)