ユーザ用ツール

サイト用ツール


mvc:スキャフォールディング

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
mvc:スキャフォールディング [2022/08/12 10:18]
ips [部分ビュー]
— (現在)
ライン 1: ライン 1:
-====== スキャフォールディングの手順 ====== 
  
-[[https://​docs.microsoft.com/​ja-jp/​aspnet/​core/​tutorials/​first-mvc-app/​adding-model?​view=aspnetcore-6.0&​tabs=visual-studio|ムービー ページのスキャフォールディング]] 
- 
- 
-  - 記号付きリスト 
-  - Modelの作成 
-  - NuGet パッケージを追加する 
-    - Install-Package Microsoft.EntityFrameworkCore.Design 
-    - Install-Package Microsoft.EntityFrameworkCore.SqlServer 
-  - Controllerフォルダを右クリックでスキャフォールディング 
-  - アプリのビルド 
-    - プロジェクトファイルから<​html><​Nullable>​enable</​Nullable></​html>​ を削除 
-  - DBの以降 
-    - Add-Migration InitialCreate 
-    - Update-Database 
-  - アプリの実行 
- 
- 
-====== SeedDataの登録 ====== 
- 
-[[https://​docs.microsoft.com/​ja-jp/​aspnet/​mvc/​overview/​getting-started/​getting-started-with-ef-using-mvc/​creating-an-entity-framework-data-model-for-an-asp-net-mvc-application#​initialize-db-with-test-data|テスト データで DB を初期化する]] 
- 
-[[https://​docs.microsoft.com/​ja-jp/​aspnet/​core/​tutorials/​first-mvc-app/​working-with-sql?​view=aspnetcore-6.0&​tabs=visual-studio#​seed-the-database|データベースのシード]] 
- 
-  - SeedDataフォルダーを作成しSeedData.csという名前の新しいクラスを作成。 
-  - Program.csに処理追加 
- 
-====== 選択したコードジェネレーターを実行中にエラーが発生しました ====== 
- 
-リビルドしても復旧せず。 
-パッケージを更新したらできるようになった。 
- 
- 
-====== 外部キーをつけてもデータが表示されない ====== 
- 
- 
-https://​docs.microsoft.com/​ja-jp/​aspnet/​mvc/​overview/​getting-started/​getting-started-with-ef-using-mvc/​creating-a-more-complex-data-model-for-an-asp-net-mvc-application 
- 
-https://​docs.microsoft.com/​ja-jp/​aspnet/​mvc/​overview/​getting-started/​getting-started-with-ef-using-mvc/​reading-related-data-with-the-entity-framework-in-an-asp-net-mvc-application 
- 
-解決方法は↓。 
-virtual ICollectionのため遅延バインディングとなっている。 
-そのためスキャフォールディングしたままだとICllectionはnullとなる。 
-[[https://​stackoverflow.com/​questions/​53194666/​display-icollection-in-view|Display ICollection in View]] 
- 
-手動でコンテキストがICollcetionを読み込むのを待つように指示してやる。 
- 
-コントローラーを以下のように変更する。 
-<code c# Controller>​ 
-        public async Task<​IActionResult>​ Index() 
-        { 
-              return View(await _context.Article.ToListAsync());​ 
-        } 
-</​code>​ 
- ↓ 
-<code c# Controller>​ 
-        public async Task<​IActionResult>​ Index() 
-        { 
-              return View(await _context.Article.Include(a => a.Comments).ToListAsync());​ 
-        } 
-</​code>​ 
- 
- 
-ビューでICollectionの関連データも読み取りれるようになる。 
-<code c# View> 
-                @foreach (var item_com in item.Comments) 
-                { 
-                        <td> 
-                            @Html.DisplayFor(modelItem => item_com.Body) 
-                        </td> 
-                } 
-</​code>​ 
- 
- 
-====== 部分ビュー ====== 
- 
-親ビューに下記コードを埋め込むとよびだせる。 
- 
- 
-<code c# Views\Shared\_PartialViewName.cshtml>​ 
-<partial name="​_PartialViewName"​ /> 
-</​code>​ 
- 
-↓でも同じ 
-<code c# Views\Shared\_PartialViewName.cshtml>​ 
-@await Html.PartialAsync("​_CurrentTimePartial"​) 
-</​code>​ 
mvc/スキャフォールディング.1660267109.txt.gz · 最終更新: 2022/08/12 10:18 by ips