【问题标题】:SaveChangesAsync() not updating the databaseSaveChangesAsync() 不更新数据库
【发布时间】:2019-01-22 23:20:05
【问题描述】:

所以,我有这个更新方法

var loanedAsset = await this.DB.Asset
                               .AsNoTracking()
                               .Where(Q => model.AssetIds.Contains(Q.AssetId)).ToListAsync();

foreach (var item in loanedAsset)
{
    item.IsLoanedBy = model.EmployeeId;
    await DB.SaveChangesAsync();
}

但是,数据库中的值没有更新。它仍然为空 我确定我的itemAssetIds 不为空,因为我已经手动检查过了。即使在foreach 内部分配了item.IsLoanedBy,但唯一的问题是,它不会更新数据库

谁能帮帮我?

【问题讨论】:

    标签: asp.net database entity-framework


    【解决方案1】:

    首先,从性能的角度来看,您应该考虑在 for 循环之后执行 saveChangesAsync,另一个问题是 .AsNoTracking() 会导致 ef 停止跟踪实体,因此当您更新它时,将不会跟踪更改并且不会应用最好的方法是:

    var loanedAsset = await this.DB.Asset
                                   .Where(Q => model.AssetIds.Contains(Q.AssetId)).ToListAsync();
    
    foreach (var item in loanedAsset)
    {
        item.IsLoanedBy = model.EmployeeId;
        this.DB.Asset.Update(item);
        this.DB.Entry(item).State=EntityState.Modified;
    }
    await DB.SaveChangesAsync();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-17
      • 2019-01-17
      • 2021-12-22
      相关资源
      最近更新 更多