1

MVC 3 の学習に忙しく、MVC 3 標準を使用して適切な/最善の方法で実装したい次のシナリオに遭遇しました。

私のDBにはhArticleとlRatingの2つのテーブルがあり、hArticleテーブルには基本的に記事情報が保存され、lRatingテーブルには1人あたりの各評価が保存されます。以下は、必要なデータを取得するために使用する SQL ステートメントです。(これは読み取りのみを目的としており、CRUD からの作成、更新、および削除は必要ありません)

SQL ステートメント:

SELECT DISTINCT A.ArticleID, A.Title, A.Likes, A.Author, 
CASE WHEN SUM(R.Rating) IS NULL THEN 0 ELSE SUM(R.Rating) END AS 'Rating'
FROM hArticle A 
LEFT OUTER JOIN lRating R ON R.ArticleID = A.ArticleID
GROUP BY A.ArticleID, A.Title, A.Likes, A.Author

これにより、次の結果が生成されます。

    1   Article 1     12    Peter Ndlovo    10
    2   Article 2     2     Peter 2         0
    3   Article 3     3     Peter 3         0
    4   Article 4     4     Peter 4         0

MVC で次の SQL ステートメントを再作成する適切な/最良の方法は何ですか?つまり、SQL ビューにマップされたモデルを作成するか、各テーブルのモデルを作成してそれらを結合しますか??

4

2 に答える 2

0

私にとって最良の方法は、すべてを切り離すことです。私のMVCプロジェクトには、データベースをほぼ正確に反映するドメインモデルがあります。これは、MVCアーキテクチャの一部ではなく、同じソリューションの「ドメインモデル」プロジェクトです。mvcのMは、ビューがデータを表示する方法を反映する「ViewModels」のセットになります。上記の場合、各テーブルのモデルを作成し、結果を表示するために使用するビューモデルにそれらを組み合わせます。

于 2012-08-13T13:48:43.777 に答える
0

そのビューの機能に必要なすべてのオブジェクトを運ぶことができるモデルを作成するか、ExpandoObject で動的モデルを使用できます

ビュー モデル アプローチ

http://stephenwalther.com/archive/2009/04/13/asp-net-mvc-tip-50-ndash-create-view-models.aspx

および動的モデル アプローチ (すばらしい記事です!)

http://www.codeproject.com/Articles/62839/Adventures-with-C-4-0-dynamic-ExpandoObject-Elasti

ただし、シンプルさが必要な場合。オブジェクトの 1 つのタイプまたは 1 つのオブジェクトのリストは単純です。そのオブジェクトをビューのモデルとして指定するだけです。

于 2012-08-13T13:47:22.687 に答える