記事詳細


投稿日
2026年08月12日14時28分
タイトル

ASP.NET Core MVC: "public ICollection<IncomeType> IncomeTypes { get; set; } = new List<IncomeType>();" このコードが必要な場合はどのようなケースの時ですか?

内容

このコード

Csharp
public ICollection<IncomeType> IncomeTypes { get; set; } = new List<IncomeType>();

が必要になるのは、ASP.NET Core MVC(特にEntity Framework Coreを使ったモデル設計)で、エンティティ間の1対多や多対多のナビゲーションプロパティを定義する場合です。

主なケース

1. エンティティ間のリレーションを表すとき

例えば、Category が複数の IncomeType を持つ場合:

Csharp
public class Category { public int Id { get; set; } public string Name { get; set; } // Category → IncomeType (1対多) public ICollection<IncomeType> IncomeTypes { get; set; } = new List<IncomeType>(); }

このようにすると、Entity Framework Core が

  • Category.IncomeTypes を通じて関連する IncomeType の一覧を取得できる
  • 新しい IncomeType を追加するときに IncomeTypes.Add(...) が使える

2. Null参照例外を防ぐため

C# の自動プロパティは初期化しないと null になります。
もし初期化しないと、次のようなコードで例外が発生します。

Csharp
var category = new Category(); category.IncomeTypes.Add(new IncomeType()); // ← IncomeTypes が null なら NullReferenceException

= new List<IncomeType>() としておけば、常に空のコレクションが用意されるため安全です。

3. モデルバインディングやビューでの繰り返し表示

ASP.NET Core MVC のビューで foreach を使って関連データを表示する場合、
初期化しておかないと null チェックが必要になります。

Csharp
@foreach (var incomeType in Model.IncomeTypes) // 初期化済みなら null チェック不要 { <p>@incomeType.Name</p> }

まとめ

このコードが必要になるのは主に以下のときです:

  • Entity Framework Core のナビゲーションプロパティとしてコレクションを持つ場合
  • Null参照例外を避けたい場合(初期化しておくことで安全)
  • ビューやコントローラでコレクションを直接操作する場合

もし希望があれば、この IncomeTypes を持つ 完全な ASP.NET Core MVC モデルとリレーション設定例 を作って、実際に動くコードをお見せできます。
これを作れば「なぜ初期化が必要か」がもっと明確になりますが、作成しますか?

Powered by Froala Editor

添付画像

画像はありません
Genreのカテゴリ-名
Models
編集 | 記事一覧