[英]How do I remove an asp.net identity user when constraints have been placed on the table?
在此ActionResult
我将从ASP.NET Users表中删除用户。
public ActionResult Delete(string UserName)
{
var thisUser =
_context.Users.FirstOrDefault(u => u.UserName.Equals(UserName, StringComparison.CurrentCultureIgnoreCase));
_context.Users.Remove(thisUser);
_context.SaveChanges();
return RedirectToAction("Index");
}
但是,当我尝试删除用户时,出现以下错误:
DELETE语句与REFERENCE约束“ FK_dbo.UserLogs_dbo.AspNetUsers_Customer_Id”冲突。 数据库“ MYDATABASE”的表“ dbo.UserLogs”的“ Customer_Id”列中发生了冲突。 该语句已终止。
我知道在其中放置了约束以防止数据损坏,这很好,但是我将如何删除约束以使刚好足以删除用户,然后在删除用户之后又将其重新添加?
您可以暂时禁用表的所有约束以避免错误,然后按如下所示重新启用它:
ALTER TABLE <table_name> NOCHECK CONSTRAINT ALL
--Run query here
ALTER TABLE <table_name> CHECK CONSTRAINT ALL
查看更多信息
简而言之,您遇到了麻烦。 但是有解决方法。
您不想仅仅为了删除用户而弄乱外键,但是这里存在约束是有充分理由的。 并且您要删除用户记录。
让我们看一下场景-用户注册,在您的站点上执行一些操作,生成一些日志记录,其中用户ID引用了该用户。 然后,用户确定他不再喜欢您的系统并删除其个人资料。 如果删除FK约束,然后从“用户”表中删除一条记录,然后还原约束,则将在“日志”表中获取包含UserId的记录。 但是您想查找该用户的时间缩短了2个月-您会发现该ID指向任何地方。 这使日志变得毫无用处。
因此,您的选择是:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.