Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc DbContext数据库集中的数据与数据库中的数据不同_Asp.net Mvc_Entity Framework_Dbcontext - Fatal编程技术网

Asp.net mvc DbContext数据库集中的数据与数据库中的数据不同

Asp.net mvc DbContext数据库集中的数据与数据库中的数据不同,asp.net-mvc,entity-framework,dbcontext,Asp.net Mvc,Entity Framework,Dbcontext,我有一个名为ProjectContext的DbContext,它有一个名为Cart的DbSet,我将值传递到: public class ShoppingCart { ProjectContext _db = new ProjectContext(); public void AddToCart(Video toAdd, Customer CurUser) { var CartItem = new Cart { C

我有一个名为ProjectContext的DbContext,它有一个名为Cart的
DbSet
,我将值传递到:

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
的实际记录数

在调试时,我可以看到Cart中的记录实际上在
DbSet
中重复,尽管它们不在实际的数据库中

我从来没有听说过这样的事情,也不知道问题出在哪里,所以任何帮助都将不胜感激。提前谢谢

在SQL Server中查询我的carts表时,我看到:

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  
当我在视图中查看时,我看到:

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>
@model IEnumerable
@foreach(模型中的var项目){
@DisplayFor(modelItem=>item.item)
@DisplayFor(modelItem=>item.Count)
@DisplayFor(modelItem=>item.Price)
@ActionLink(“删除项”、“删除项”,新的{custID=Item.CustomerID,toRemove=Item.Item})
}

调试时,我可以看到我使用的名为Carts的
DbSet
具有重复记录,因此我认为视图不是问题所在

您的
购物车
实体必须具有唯一的主键
CustomerID
不是唯一的,EF总是为一个特定值获取它能找到的第一条记录。因此,我将引入一个
CartId
字段。

能否将代码发布到输出到视图的位置?另外,您将模型传递到视图的位置?原始编辑以响应您的评论,谢谢。视图中的代码?因此,要清楚,它在数据库中是正确的,在_cartdb.Carts中从r返回的
中是错误的,其中r.CustomerID==WebSecurity.CurrentUserId选择r)