3

ユーザーが無効になっているときに、ユーザーのセキュリティスタンプを更新しています。私はこれのような1人のユーザーのためにこれを行うことができます。ユーザーのセキュリティスタンプを一括更新するにはどうすればよいですか? Asp.net ID

await UserManager.UpdateSecurityStampAsync(userId); 

500または100 をハチことは、私が一括でこれを行うことができますどのような方法がありますように私は、このフォームを複数のユーザをしたいですか?

私はエンティティフレームワークを使用しています。

+0

EFは一括更新ではあまりよくありません。 SQL問合せを実行しても問題ありませんか? – trailmax

+0

はい、でも、sqlを使って各ユーザーのUpdateSecurityStampAsync(Id)をどのように呼び出すか分かりません。 – mfahadi

答えて

3

セキュリティスタンプは、実際の値の有意な重要性を持つランダムな文字列なので、あなただけの新しいを詰め込むことができますそこにGUID。バルクでそれを行うには

ベストな方法は、SQLクエリを実行するために、次のようになります。

update ApplicationUsers set SecurityStamp = NEWID() 

更新する必要があるユーザーを制限するために、必要に応じてあなたがwhere句を指定することができ、最も可能性の高いあなたが変更する必要がありますあなたのDBに実際にあるものにテーブルの名前。このクエリを実行する

あり、さまざまな方法 - あなたはEFでこれを行うことができます。

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

それとも、すでに推奨EF.Extendedライブラリに見ることができます - 一括更新はSQLに浸漬せずに可能です。

+0

あなたはヒント 'セキュリティスタンプは単なるランダムな文字列です。'と答えました。 – mfahadi

+0

@mfahadi嬉しいです! – trailmax

1

使用することができますEntity Framework拡張ライブラリ更新を実行する最も速い方法です。拡張ライブラリ一括更新は、変更する前にエンティティを取得して読み込む必要がなくなるため、非常に高速です。そのドキュメントから

例:

//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

+1

実際に私はこの機能を各ユーザーに呼び出す必要があります。どうすればいいのか教えてください。 UserManager.UpdateSecurityStampAsync(userId) – mfahadi

関連する問題