モデルとは何ですか?
私はASP.NetWebForms開発者です。私はMVCを数日間勉強しています。
コントローラとビューの概念は理解できますが、モデルとは何ですか?
データですか?LINQを使用する必要がありますか、それとも従来のストアドプロシージャを使用できますか?
私はASP.NetWebForms開発者です。私はMVCを数日間勉強しています。
コントローラとビューの概念は理解できますが、モデルとは何ですか?
データですか?LINQを使用する必要がありますか、それとも従来のストアドプロシージャを使用できますか?
抽象レベルでModel
は、データベースとデータを操作することがすべてです。
LINQまたはその他の従来のストアドプロシージャを介してデータベースと対話するための厳格なルールはありません。それは完全に文脈に依存します。
ところで、Skinny Controller and Fat Model
アプローチに従うと、ビジネスロジックが入り込んだり、ビジネスロジックを処理するためにModel
開発したりする可能性がありますがService layer
、私はモデルにビジネスロジックを含めることを好みます。
モデルとは、ドメインモデルまたはデータを意味します。必ずしもLINQオブジェクトである必要はありません。ドメインモデルのPOCOクラスを作成し、任意のデータアクセス方法を使用してデータを入力できます。そのために、 LinqtoSQL、EntityFrameWork 、またはプレーンADO.NETを使用できます。それは完全にあなた次第です。
MVCサンプルを探すと、ほとんどの場合、LINQtoSQLまたはEntityFrameworkを使用したサンプルコード/プログラムが表示されます。これらは、開発者がDataReaderからPOCOクラスへのすべてのマッピングコードを記述しないようにするためのORMSです。
MVCは、データアクセス方法が何であるかを気にしないことを忘れないでください。MCVは、これらのさまざまな懸念事項をさまざまなレイヤーに分離する開発パターンです。
データですか?
一般的に、それはデータと動作です。モデルを設計するときは、「データベース」を完全に忘れることをお勧めします。ドメイン駆動設計の本には、この優れた例があります。
LINQを使用する必要がありますか、それとも従来のストアドプロシージャを使用できますか?
永続的に無知になるようにモデルを作成してみてください。多くの回答がデータベースについて言及していますが、理想的には、モデルはそれがどのように永続化されるかについての知識を持ってはなりません。また、場合によっては、モデルのすべての部分が永続化されるわけではありません。キッグソースを見てください。これは、モデルと永続性が明確に分離されていることを示しています。これは、EFとLinqを2つの異なるオプションとして実装することを示しています。
IMO、ASP.NET MVC in Actionブックは、MVCのさまざまな部分をレイアウトし、さまざまな「モデル」、ViewModelとエンティティモデルなどについて説明するのに最適です。
編集:多分質問は、(ドメイン駆動設計||データ駆動設計)では、モデルは何ですか?
1)はい、データに関連しています。
MODELは、データまたはアクティビティを表すオブジェクトです。たとえば、データベーステーブルや、プラントフロアの生産機械プロセスなどです。
2)技術的には、Linqまたはストアドプロシージャを介して取得できます。
モデルは、データに関する単一の決定的なデータソースです。これには、保存しているデータの重要なフィールドと動作が含まれています。通常、各モデルは単一のデータベーステーブルにマップされます。