MVC创建SQL视图与将计算放入控制器

时间:2012-05-19 10:11:44

标签: sql asp.net-mvc view one-to-many

我申请了一份工作,他们要求我在面试之前创建一个小型MVC应用程序。他们拒绝说我曾经使用过不好的做法。请帮我弄清楚我做错了什么!

该任务涉及一个简单的数据库,其Product加载Sales(一对多)。

我必须:

  1. 显示总销售额的产品列表
  2. 显示并允许销售的编辑和删除
  3. 我的解决方案:

    1. 创建一个左连接的SQL视图,该视图使用一个组并连接到自身以获得销售总额。此表每个产品有一行

    2. 创建包含所有产品和销售数据的内部联接SQL视图。每次销售一行。

    3. 对于#1,我刚刚渲染了视图

      对于#2,我必须提供产品详细信息和销售详细信息(单页上的一对多),所以我在控制器中执行了以下操作:

      public ActionResult Details(int id)
      {
           // get details for the selected product
           var product = db.ProductsWithTotals.Where(q => q.ProductId == id).Single();
           ViewData["CatalogueNumber"] = product.CatalogueNumber;
           ViewData["Title"] = product.Title;
           ViewData["Artist"] = product.Artist;
           ViewData["TotalSold"] = product.TotalSold;
           ViewData["ProductId"] = product.ProductId;
      
           // then pass its sales lines to the view
           var salesLines = db.SalesLineDetails.Where(q => q.ProductId == id);
           return View(salesLines);
      }
      

      如果有人能够解释我如何更优雅地完成这项任务,那将非常感激。

1 个答案:

答案 0 :(得分:0)

我个人唯一不同的做法是:

  • 使用EF(但是,对于这样的快速,L2S很好)
  • 为详细信息视图创建ViewModel类。我尽可能少地使用ViewData。

但是,这里没什么不好的,我同意这可能不适合工作。如果他们不想说他们不喜欢你的面孔,人们也往往会弄清楚原因。

/耸肩