2

仕事に応募したところ、面接の前に小さな MVC アプリを作成するよう求められました。彼らは私が悪い習慣を使っていたと言ってそれを拒否しました. 私が間違っていたことを理解するのを手伝ってください!

このタスクには、 (1 対多)Productの負荷を持つ単純なデータベースが含まれていました。Sales

そうしなければならなかった:

  1. 製品のリストと総売上高を表示する
  2. 販売の表示と編集および削除の許可

私の解決策:

  1. グループを使用する左結合 SQL ビューを作成し、それ自体に結合して売上合計を取得します。このテーブルには、商品ごとに 1 つの行がありました

  2. すべての製品データと販売データを含む内部結合 SQL ビューを作成します。これには、販売ごとに 1 つの行がありました。

#1については、ビューをレンダリングしました

#2 では、製品の詳細と販売の詳細 (1 つのページに 1 対多) を表示する必要があったため、コントローラーで次のことを行いました。

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 に答える