所以,我有这种更新方法
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
我确定我的item
或AssetIds
不为null,因为我已经手动对其进行了检查。即使在foreach
内部也分配了item.IsLoanedBy
,但是唯一的问题是,它不会更新数据库
有人可以帮助我吗?
答案 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();