仕事に応募したところ、面接の前に小さな MVC アプリを作成するよう求められました。彼らは私が悪い習慣を使っていたと言ってそれを拒否しました. 私が間違っていたことを理解するのを手伝ってください!
このタスクには、 (1 対多)Product
の負荷を持つ単純なデータベースが含まれていました。Sales
そうしなければならなかった:
- 製品のリストと総売上高を表示する
- 販売の表示と編集および削除の許可
私の解決策:
グループを使用する左結合 SQL ビューを作成し、それ自体に結合して売上合計を取得します。このテーブルには、商品ごとに 1 つの行がありました
すべての製品データと販売データを含む内部結合 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);
}
これをもっと優雅に行う方法を誰かが説明できれば、大歓迎です。