2

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

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

我不得不:

  1. 显示总销售额的产品列表
  2. 显示并允许编辑和删除销售

我的解决方案:

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

  2. 使用所有产品和销售数据创建一个内部连接的 SQL 视图。每次销售只有一排。

对于#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);
}

如果有人能解释我如何能更优雅地做到这一点,将不胜感激。

4

1 回答 1

0

我个人唯一会做不同的事情是:

  • 使用 EF(但是是的,L2S 适合这样的快速操作)
  • 为详细信息视图创建一个 ViewModel 类。我尽可能少地使用 ViewData。

但是,是的,这里没什么不好,我同意这可能不是一个工作的好地方。如果人们不想说他们不喜欢你的脸,他们也倾向于编造模糊的理由。

/耸耸肩

于 2012-05-30T15:15:01.097 回答