【问题标题】:How to do the following (SQL) as a model / models如何将以下(SQL)作为模型/模型
【发布时间】:2012-08-09 13:54:24
【问题描述】:

忙于学习 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 视图的模型还是为每个表创建一个模型并将它们组合起来等等?

【问题讨论】:

    标签: sql asp.net-mvc model-view-controller model


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-18
        • 2020-08-25
        • 2019-05-06
        • 2020-08-25
        • 2019-06-28
        相关资源
        最近更新 更多