私は教師自身のMVCをやっていて、難しい問題に遭遇しました。私のデータベースには、ビール用テーブルとビール用テーブルがあります。もちろん、Beerに醸造所があることを保証するための外部キー制約があります。この制約は、データベースにそのビール醸造所のビールがある場合、ビール醸造所が削除されるのを防ぐための「行動なし」制約です。この種のロジックの正しい場所はどこですか?
私は醸造所の索引ページを実装しています。自動的に生成されたコードは、醸造所と編集、詳細、および削除をリストしています。ここまでは順調ですね。 Beersを持つBreweryを削除しようとすると、その削除は外部キー制約のために失敗します。
しかし、削除できない場合は削除オプションを保留する方が良いようです。これは、このようなビューのコードにつながる: -
@Html.ActionLink("Edit", "Edit", new { id=item.BreweryID }) |
@Html.ActionLink("Details", "Details", new { id=item.BreweryID })
@if(item.Beers.Count == 0)
{
<text> |</text>
@Html.ActionLink("Delete", "Delete", new { id=item.BreweryID })
}
モデルのデザインビューに漏れ出ているように私には思えるが、私はすべての選択肢を見ることができません。削除リンクが表示されているかどうか、ビューはこれを行う必要があります。
どのようにこのようなことに取り組まなければなりませんか?
注意標準的な慣行です。 – pnm
確かに。これは、最初に強く型付けされたモデルを持っている全体のポイントです。モデルとのやりとりのビューには何も問題はありません。それは、それが*想定しているものです。あなたはあなたの見解で余分なロジックを見てみたいです。単純にコレクションの数を取得することは問題ありませんが、 'Where'節を' Selects'などのように追加するなど、モデルクラスに入れ替えなければならないことがある場合には、 –