我有一个名为 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
我为每个客户插入的第一条数据记录会重复。因此,当我在 View 中查看模型时,每个客户的第一条记录都会重复,但实际上有很多记录CustomerID
。
我可以在调试时看到 Cart 中的记录实际上在 中重复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
我使用的被调用的购物车有重复记录,所以我认为视图不是问题。