4
我上傳包含所有需要的用戶到使用ASP.NET身份和OwinContext和EF 6.我的網站上的Excel文件 我的代碼看起來像下面:批量用戶創建
foreach (var bulkUserDetail in bulkUser.BulkUserDetails)
{
var userManager = owinContext.GetUserManager<ApplicationUserManager>();
var userProfile = new UserProfile();
userProfile.Username = bulkUserDetail.Username;
AspNetUser newUser = new AspNetUser
{
UserName = userProfile.Username,
Email = bulkUserDetail.Email,
LastPasswordChangedDate = null,
};
var creationResult = userManager.Create(newUser);
if (creationResult.Succeeded)
{
string token = userManager.GeneratePasswordResetToken(newUser.Id);
}
}
的問題是,下面兩行的表現相當令人失望
userManager.Create(newUser) -- (900 milliseconds)
userManager.GeneratePasswordResetToken(newUser.Id) --(1800 milliseconds)
數量多,即2000個用戶,性能成爲一個嚴重的問題。 有沒有更好的做法來加快這個過程?我願意接受建議,但我必須保留OwinContext庫。
在此先感謝
一件事你重新獲得你的循環的UserManager內部。這真的有必要嗎?我沒有看過代碼,但如果發生任何延遲加載,它可能會減慢速度。 –
謝謝大衛。它幫助了很多。我還爲整個上傳塊使用了一個Context對象,它也提高了性能。現在它在大約20分鐘內加載2000條記錄。任何其他想法? – Barsham
花了一些時間來查看源代碼後,如果您使用ApplicationUserManager時發生死亡,我認爲您運氣不佳。沒有任何東西支持任何類型的鏈接上下文或批處理用戶創建。你最好的選擇可能是某種並行化(如下面的建議),儘管這可能不一定會給你帶來更好的結果。 –