我经常看到这样的代码:
var user = await _userManager.FindByNameAsync(username);
var result = await _userManager.DeleteAsync(user);
return new JsonResult(result);
但我想知道你的意见,是这样做好呢,还是检查用户是否真的存在的if语句更好?
我经常看到这样的代码:
var user = await _userManager.FindByNameAsync(username);
var result = await _userManager.DeleteAsync(user);
return new JsonResult(result);
但我想知道你的意见,是这样做好呢,还是检查用户是否真的存在的if语句更好?
_userManager.DeleteAsync
的实现方式,因为您正在使用.Net Core Identity,DeleteAsync
方法的实现将抛出ArgumentNullException
。public virtual Task<IdentityResult> DeleteAsync(TUser user)
{
ThrowIfDisposed();
if (user == null)
{
throw new ArgumentNullException(nameof(user));
}
return Store.DeleteAsync(user, CancellationToken);
}
注意:此答案假定您正在使用内置的UserManager
而不是自定义的。
正如您在源代码中所看到的:
public virtual Task<IdentityResult> DeleteAsync(TUser user)
{
ThrowIfDisposed();
if (user == null)
{
throw new ArgumentNullException(nameof(user));
}
return Store.DeleteAsync(user, CancellationToken);
}
null
作为参数传递给 DeleteAsync
将抛出 ArgumentNullException
。所以,不,你提供的代码是不正确的。你需要先检查用户是否存在:var user = await _userManager.FindByNameAsync(username);
if (user == null)
{
return BadRequest("User not found");
}
var result = await _userManager.DeleteAsync(user);
return Json(result);