私は小さなウェブショップを作ることに挑戦していますが、DB に注文を保存する際に問題に直面しました。
これは私の注文クラスです
[Key]
public int Id { get; set; }
public IEnumerable<BasketProduct> BasketProducts { get; set; }
public string UserName { get; set; }
BasketProducts を格納します (int Id がないと動作したくなかったのですが、なぜそれが必要なのかわかりません)
public int Id { get; set; }
public Product Product { get; set; }
public int Quantity { get; set; }
BasketController で、ユーザーがチェックアウトをクリックした場合、注文を作成して DB に入れたい
public ActionResult CreateOrder()
{
//GetCurrentBasket returns a basket of current session
var baskItems = GetCurrentBasket().Items;
Order order = new Order { BasketProducts = baskItems, UserName = User.Identity.Name };
EFDbContext ent = new EFDbContext();
ent.Orders.Add(order);
ent.SaveChanges();
return RedirectToAction("Index", "Checkout", new { order = order });
}
チェックアウトの Index メソッドでは、 Order オブジェクトを取り、その中のすべての製品を表示するだけです。
@model Domain.Elements.Order
//some code omitted
@foreach (var item in Model.BasketProducts)
{
<p>@item.Product.Name</p>
<p>@item.Quantity</p>
}
問題は、DB (Order テーブル内) で Id と UserName のみが作成されるため、現在の人が注文した製品を取得できないことです。
私はどのような間違いを犯しましたか、それとも機能させるために何かが欠けているのでしょうか? 前もって感謝します。
編集:これは私が今得たエラーです。オブジェクト参照がオブジェクト インスタンスに設定されていません。