为什么EF代码第一次更新方法不起作用?

时间:2016-02-04 12:25:13

标签: c# entity-framework updates

我有这个方法:

public void Update(DBS.BankAccount entity)
{
    try
    {
        using (var _nahidContext = new NahidContext())
        {
            _nahidContext.BankAccounts.Attach(entity);
            var bankAccountElement = _nahidContext.Entry(entity);
            bankAccountElement.CurrentValues.SetValues(entity);
            _nahidContext.SaveChanges();
            //__________  or   ___________
            //var bankAccountElement = FindById(entity.Id);
            //if (_nahidContext.Entry(bankAccountElement).State == System.Data.Entity.EntityState.Detached)
            //{
            //    _nahidContext.BankAccounts.Attach(bankAccountElement);
            //}
            ////_nahidContext.Entry(bankAccountElement).State = System.Data.Entity.EntityState.Modified;
            //_nahidContext.SaveChanges();
        }
    }
    catch (Exception ex)
    {
        throw new ArgumentException(ex.Message);
    }
}

哪个运行没有任何错误,但我的bankAccountElement不会更改。 请帮帮我。

1 个答案:

答案 0 :(得分:2)

首先附加(实体状态=未更改),然后设置值与附加实体相同的值,因此它保持不变。

你应该这样做

    _nahidContext.BankAccounts.Attach(entity);
    var bankAccountElement = _nahidContext.Entry(entity);
    bankAccountElement.State = EntityState.Modified;

您可以阅读更多here