SaveChangesAsync()不更新数据库

时间:2018-08-16 04:21:42

标签: asp.net database entity-framework

所以,我有这种更新方法

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();
}

但是,数据库中的值未更新。它仍然为NULL 我确定我的itemAssetIds不为null,因为我已经手动对其进行了检查。即使在foreach内部也分配了item.IsLoanedBy,但是唯一的问题是,它不会更新数据库

有人可以帮助我吗?

1 个答案:

答案 0 :(得分: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();