所以,我有这个更新方法
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();
}
但是,数据库中的值没有更新。它仍然为空我确定我的item
或AssetIds
不是空的,因为我已经手动检查过它。即使是内部foreach
的item.IsLoanedBy
分配,但唯一的问题是,它不会更新数据库
有谁能够帮我?
首先,从性能的角度来看,您应该考虑在 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();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句