1

忙于学习 MVC 3 并遇到了以下场景,我想使用 MVC 3 标准以正确/最佳的方式实施。

我的数据库中有 2 个表 hArticle 和 lRating,hArticle 表基本上存储文章信息,lRating 表存储每个人的每个评分。下面是我用来获取所需数据的 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

创建一个模型,该模型可以承载该视图功能所需的所有对象,或者您可以将动态模型与 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

虽然如果你需要简单,即。一种类型的对象的列表或只是一个对象比生活简单只需将该对象作为视图的模型

于 2012-08-13T13:47:22.687 回答
0

对我来说,最好的方法是解耦一切。在我的 MVC 项目中,我有一个或多或少准确地反映数据库的域模型,这不是 MVC 架构的一部分,而是同一解决方案中的“域模型”项目。然后,mvc 的 M 将是一组“视图模型”,它们反映了我的视图呈现数据的方式。对于上面的内容,我将为每个表创建一个模型,并将它们组合在一个视图模型中,我将使用它来显示结果。

于 2012-08-13T13:48:43.777 回答