[英]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.