ProjectContext という名前の DbContext があり、DbSet
値を渡すという名前の Cart があります。
public class ShoppingCart
{
ProjectContext _db = new ProjectContext();
public void AddToCart(Video toAdd, Customer CurUser)
{
var CartItem = new Cart
{
CustomerID = CurUser.CustomerID,
Item = toAdd.Title,
Count = 1,
Price = 1.00m
};
_db.Carts.Add(CartItem);
_db.SaveChanges();
}
}
public class Cart
{
[Key, Required, DatabaseGenerated(DatabaseGeneratedOption.None)]
public int CustomerID { get; set; }
public string Item { get; set; }
public int Count { get; set; }
public decimal Price { get; set; }
}
基本的に、顧客は同じCustomerID
. 実際のデータベースではすべて問題なく、正しいレコードがすべて追加されています。問題は、実際DbContext
には、顧客ごとに挿入する最初のデータ レコードが繰り返されることです。したがって、ビューでモデルを表示すると、各顧客の最初のレコードが、実際のレコードの数だけ繰り返されCustomerID
ます。
デバッグ中に、カート内のレコードが実際には で繰り返されることがわかりますDbSet
が、実際のデータベースにはありません。
私はこのようなことを聞いたことがなく、何が問題なのか本当にわからないので、助けていただければ幸いです. 前もって感謝します。
SQL Server でカート テーブルにクエリを実行すると、次のように表示されます。
5 shutter island 2 1.00
5 billy madison 2 1.00
5 superbad 1 1.00
ビューで表示すると、次のように表示されます。
Item Count Price
shutter island 2 1.00
shutter island 2 1.00
shutter island 2 1.00
モデルをビューに渡すコード:
public ActionResult Index()
{
IEnumerable model =(from r in _cartdb.Carts
where r.CustomerID == WebSecurity.CurrentUserId
select r);
return View(model);
}
ビュー内のコード:
@model IEnumerable<MVCVideoProject.Models.Cart>
<table>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Item)
</td>
<td>
@Html.DisplayFor(modelItem => item.Count)
</td>
<td>
@Html.DisplayFor(modelItem => item.Price)
</td>
<td>
@Html.ActionLink("Remove Item", "RemoveItem", new { custID = item.CustomerID, toRemove = item.Item })
</td>
</tr>
}
</table>
私が使用している呼び出されたカートに繰り返しレコードがあることをデバッグするときに確認できるDbSet
ので、ビューに問題はないと思います。