如何批量更新用户的安全戳?Asp.net标识

如何批量更新用户的安全戳?Asp.net标识,asp.net,entity-framework,asp.net-web-api,asp.net-identity,Asp.net,Entity Framework,Asp.net Web Api,Asp.net Identity,当用户被停用时,我正在更新用户安全戳。我可以为一个用户这样做 await UserManager.UpdateSecurityStampAsync(userId); 我想这样做的形式多个用户,如500或可能蜜蜂100。 有什么办法可以批量完成吗 我正在使用实体框架。您可以使用实体框架扩展库。这是执行更新的最快方法。扩展库批量更新消除了在修改实体之前检索和加载实体的需要。因此速度非常快。请尝试 他们文档中的示例: //update all tasks with status of 1 to st

当用户被停用时,我正在更新用户安全戳。我可以为一个用户这样做

await UserManager.UpdateSecurityStampAsync(userId);
我想这样做的形式多个用户,如500或可能蜜蜂100。 有什么办法可以批量完成吗


我正在使用实体框架。

您可以使用实体框架扩展库。这是执行更新的最快方法。扩展库批量更新消除了在修改实体之前检索和加载实体的需要。因此速度非常快。请尝试

他们文档中的示例:

//update all tasks with status of 1 to status of 2
context.Tasks
    .Where(t => t.StatusId == 1)
    .Update(t => new Task { StatusId = 2 });

您可以在这里了解更多信息:

安全戳是一个随机字符串,实际值不重要,所以您可以在这里填充新的GUID

批量执行的最佳方法是执行SQL查询:

update ApplicationUsers set SecurityStamp = NEWID()
您可以根据需要指定
where
子句来限制需要更新的用户,并且很可能需要将表的名称更改为数据库中的实际名称

有不同的方法执行此查询-您可以使用EF执行此操作:

context.Database.ExecuteSqlCommand("UPDATE ApplicationUsers........"); 

或者您可以查看已经推荐的EF。扩展库-无需使用SQL即可进行批量更新。

实际上,我必须为每个用户调用此函数,您能告诉我如何做到这一点吗。UpdateSecurityStampAsync(userId)EF对于批量更新不是很好。您可以执行SQL查询吗?可以,但不知道如何使用SQL对每个用户调用UpdateSecurityStampAsync(Id)。接受您对提示“安全戳只是一个随机字符串”的回答:)@mfahadi很高兴它有帮助!