asp.net - SaveChangesAsync() 不更新数据库

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

但是,数据库中的值没有更新。它仍然为空 我确信我的 itemAssetIds 不为空,因为我已经手动检查过。即使在 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();

关于asp.net - SaveChangesAsync() 不更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51869568/

相关文章:

c# - 将自动生成的 pdf 附加到 asp.net 应用程序中的电子邮件

asp.net - 内部服务器错误 500.24

android - 更新在 SQLite 数据库中不起作用

c# - 在 EntityFramework 和 SQL Anywhere 作为提供者中使用字符串作为 PK 更新实体

c# - 屏蔽电话号码的文本框 View

c# - 我可以在 PostAuthorizeRequest 方法中启动 MVC Mini Profiler 吗?

database - 有没有关于 Apache Cassandra 的终极好文档?

php - 使用MySql数据库用php登录

c# - EF6 DbContext IOC 依赖

entity-framework - 在 Entity Framework 核心中抑制 SQL 查询日志记录