我正在尝试使用个人帐户的 MVC 5.2 模板。一切正常,除了当我尝试删除用户的登录时,我收到以下错误消息:
操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。
在 ManagerController 的以下行:
var result = await this.UserManager.RemoveLoginAsync(this.User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));
这是完整的 RemoveLogin 操作:
[HttpPost]
[Route("RemoveLogin")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> RemoveLogin(string loginProvider, string providerKey)
{
ManageMessageId? message;
var result = await this.UserManager.RemoveLoginAsync(this.User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));
if( result.Succeeded )
{
var user = await this.UserManager.FindByIdAsync(this.User.Identity.GetUserId());
if( user != null )
await this.SignInAsync(user, isPersistent: false);
message = ManageMessageId.RemoveLoginSuccess;
}
else
message = ManageMessageId.Error;
return this.RedirectToAction("ManageLogins", new { Message = message });
}