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

时间:2016-11-22 07:17:46

标签: asp.net entity-framework asp.net-web-api asp.net-identity

我正在停用用户时更新用户安全标记。我可以为这样的用户这样做。

await UserManager.UpdateSecurityStampAsync(userId);

我想从多个用户那里做这个,比如500或者可能是100。 我有什么方法可以批量做到这一点吗?

我正在使用实体框架。

2 个答案:

答案 0 :(得分:3)

安全标记是一个随机字符串,对实际值没有重要意义,所以你可以在那里填充新的GUID。

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

update ApplicationUsers set SecurityStamp = NEWID()

您可以根据需要指定where子句来限制您需要更新的用户,并且您很可能需要将表的名称更改为您在数据库中实际拥有的名称。

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

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

或者您可以查看已经推荐的EF.Extended库 - 无需深入SQL即可进行批量更新。

答案 1 :(得分:1)

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

他们的文档示例:

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

您可以在此处详细了解:Entity Framework Extended Library