繁体   English   中英

使用Entity Framework保存1条记录的更改正在更新数据库中的2条记录

[英]Saving changes from 1 record using Entity Framework is updating 2 records in database

我有一个包含客户销售的数据库。 我正在尝试使用Entity Framework更新1条记录,但是当我检查我的数据库时,已经更新了两条记录

我的表名为Customers ,有两个记录:

NameID    GenderID      ItemID          ShopID    Cost      
--------------------------------------------------------
587651    1              464             9         NULL 
587651    1              512             9         NULL 

我想更新我尝试使用Entity Framework做的第一条记录。

这是我的代码:

using (var context = new Customers())
{
    var _customers = (from all in context.Customers
                      where (all.NameID == 587651) && 
                            (all.GenderID == 1) &&
                            (all.ItemID == 464) && 
                            (all.ShopID == 9)
                      select all).First();
    _customers.Cost = 100;
    context.SaveChanges();
}

保存更改后,我在数据库中获得以下内容:

NameID    GenderID      ItemID         ShopID     Cost      
--------------------------------------------------------
587651    1              464             9         100  
587651    1              512             9         100

知道发生了什么事吗?

好的,所以我现在已经解决了这个问题,感谢上面的评论。 定义我的表的代码如下所示:

public partial class Customers
{
    [Key]
    [Column(Order = 0)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int NameJID { get; set; }

    [Key]
    [Column(Order = 1)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int GenderID { get; set; }

    public int? ItemID { get; set; }

    [Key]
    [Column(Order = 2)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int ShopID { get; set; }

    public double? Cost { get; set; }
}

如您所见,主键仅包括NameID,GenderID和ShopID。 另请注意ItemID如何可以为空。 我现在已将代码更改为:

public partial class Customers
{
    [Key]
    [Column(Order = 0)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int NameJID { get; set; }

    [Key]
    [Column(Order = 1)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int GenderID { get; set; }

    [Key]
    [Column(Order = 2)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int ItemID { get; set; }

    [Key]
    [Column(Order = 3)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int ShopID { get; set; }

    public double? Cost { get; set; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM