ASP.NET Core MVC
アプリケーションを弄っています。
根本的な事で大変恐縮ですが、ご教授お願い致します。
また、複数まとめて質問させていただきます。よろしくお願いいたします。
分からないこと
- データベースを操作したいので、
EntityFramework
を使用して、Model
からテーブルを作成しました。
この為、Model
はデータベースの各フィールドに対応するプロパティを持つ、1レコードのデータオブジェクトです。
csharp
1 public class SampleModel 2 { 3 // ID 4 public long Id { get; set; } 5 : 6 // 年齢 7 public int Age { get; set; } 8 // 作成日時 9 public DateTime CreateDate { get; set; } 10 // 更新日時 11 public DateTime UpdateDate { get; set; } 12 }
「Modelはビジネスロジックを含む」という認識があるのですが、Modelの集合(DbSet<SampleModel>
など)を参照・操作するロジックは、どこに持たせるのでしょうか?
(例:平均年齢を算出する、など)
EntityFramework
を使用したView
を、上記Model
からスキャフォールディングを使って作成しました。
cshtml
1@model IEnumerable<CoundTest.Models.SampleModel> 2 3@{ 4 ViewData["Title"] = "Index"; 5} 6 7<h1>Index</h1> 8 9<table> 10 <thead> 11 <tr> 12 <th>@Html.DisplayNameFor(model => model.AddressCode)</th> 13 : 14 <th>@Html.DisplayNameFor(model => model.UpdateDate)</th> 15 </tr> 16 </thead> 17 <tbody> 18 @foreach (var item in Model) 19 { 20 <tr> 21 <td>@Html.DisplayFor(modelItem => item.AddressCode)</td> 22 : 23 <td>@Html.DisplayFor(modelItem => item.UpdateDate)</td> 24 </tr> 25 } 26 </tbody> 27</table>
上記View
を見ると、Model
の構造(プロパティ)を把握しているように思えます。
「ViewとModelの関心を分離する」という意味からずれている気がするのですが、
どいうことなのでしょうか?
盛大に勘違いしているかもしれませんが、よろしくお願いいたします。
追記
開発環境
- Windows 10 Pro 20H2
- .NET Core 3.1
- Microsoft Visual Studio Community 2019 Version 16.7.7
- Microsoft.AspNetCore.App 3.1.8
- Microsoft.NetCore.App 3.1.0
- Microsoft.EntityFrameworkCore 5.0.3
- Microsoft.EntityFrameworkCore.SqlServer 5.0.3
- Microsoft SQL Server 2019 15.0.2000.5
回答1件
あなたの回答
tips
プレビュー