![](/img/trans.png)
[英]Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException
[英]Exception thrown: 'Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException' in System.Private.CoreLib.ni.dll
我創建了這個包分配方法:
[HttpPut("api/auth/user/{id}")]
public async Task<IActionResult> AssignPackage(string id ,[FromBody] AppUser user)
{
try
{
var newUser = Mapper.Map<AppUser, UserViewModel>(user);
var userToEdit = await _context.AppUser
.AsNoTracking()
.SingleOrDefaultAsync(m => m.Id == id);
newUser.PackageType = user.AccountType;
if (userToEdit == null)
{
return NotFound("Could not update user as it was not found");
}
else
{
_context.Update(user);
await _context.SaveChangesAsync();
//return Ok(newUser);
}
UserViewModel _userVM =
Mapper.Map<AppUser, UserViewModel>(user);
return new OkObjectResult(_userVM);
}
catch (DbUpdateException)
{
//Log the error (uncomment ex variable name and write a log.)
ModelState.AddModelError("", "Unable to save changes. " +
"Try again, and if the problem persists, " +
"see your system administrator.");
return NotFound("User not Found");
}
}
該方法的目的是我在郵遞員中輸入Account類型,輸出應為具有更新Package類型的用戶視圖模型。 但是,將accountType輸入postman
,輸出為'User not found'
和錯誤為'404 Not found'
。
在Visual Studio
中,顯示的錯誤是問題的標題。 不確定可能是什么問題(僅限初學者水平的經驗)。
使用的模型:
public class AppUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string AccountType { get; set; }
public int? PeriodOrderQty { get; set; }
public int? TotalOrderQty { get; set; }
public Guid? APIKey { get; set; }
public Packages Package { get; set; }
public Cities City { get; set; }
public QualificationLevels Qualifications { get; set; }
public string Token { get; set; }
}
public class UserViewModel
{
public string Id { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
public string PackageType { get; set; }
public int? PeriodOrderQty { get; set; }
public int? TotalOrderQty { get; set; }
public Guid? APIKey { get; set; }
}
鑒於AppUser
從IdentityUser
繼承,似乎當您調用_context.Update(user);
沒有Id
。
我懷疑如果您檢查該字段,該字段將為0,因為它將作為正文的一部分出現。
因此,EF找不到要更新的實體,所以這就是您遇到異常的原因
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.