EF实体未将新值设置为属性

时间:2016-08-23 06:21:47

标签: c# entity-framework

我有实体类:

 public class Account : IAccount
 {
    [Key, ForeignKey("PUser")]
    public int IdUser { get; set; }
    public virtual User PUser { get; set; }

    [Required]
    public decimal Balance { get; set; }
  }

但是当我尝试更新检索实体并将新值设置为属性Balance时,该值不会发生变化。

为什么会发生这种情况,我应该如何改变呢?

Account senderAccount = _context.Accounts.FirstOrDefault(u => u.IdUser == userSenderId);
if (senderAccount != null)
 senderAccount.Balance = 400;

之后senderAccount.Balance仍有旧值

Thnx

1 个答案:

答案 0 :(得分:4)

在调用SaveChanges方法之前,不会将查询发送到数据库。所以你要做的就是在想要向数据库发送查询时添加_context.SaveChanges();行。在你的情况下,它应该是这样的:

Account senderAccount = _context.Accounts.FirstOrDefault(u => u.IdUser == userSenderId);
if (senderAccount != null)
 senderAccount.Balance = 400;
_context.SaveChanges();

此外,如果适用,请不要忘记在using块内部创建上下文。 阅读更多here