У меня есть действие, которое генерирует много новых пользователей на основе старой БД, элемент с деталями передается и используется для этого, называемый здесь «regitem».Цикл foreach циклически перебирает каждый регитем и создает пользователя:
var user = new ApplicationUser { UserName = regitem.Email.Trim(), Email = regitem.Email.Trim(), Fname = regitem.Fname.Trim(), Lname = regitem.Lname.Trim(), OrgID = OrgID, RegistrationDate = regitem.RegistrationDate ?? DateTime.Now, LastLoginDate = regitem.LastLoginDate, EmailConfirmed = true, PhoneNumber = regitem.PhoneNumber };
var result = UserManager.Create(user, regitem.Password);
С течением времени UserManager становится все медленнее и медленнее.Насколько я понимаю, это потому, что контекст не удаляется, и лучшим подходом было бы создание экземпляра и распоряжение для каждого создания учетной записи пользователя.В контроллере UserManager создается следующее:
private ApplicationUserManager _userManager;
public AddOldDataController(ApplicationUserManager userManager, ApplicationSignInManager signInManager)
{
UserManager = userManager;
}
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
Я знаю, как избавиться от UserManager для каждого создания пользователя, но я не уверен в том, как создавать экземпляры каждый раз.Я читал, что оператор using будет автоматически удалять контекст каждый раз, но, опять же, я не знаю, как именно мне следует создать экземпляр в этой ситуации.
Какой лучший способ сделать это и избежать замедления UserManager с помощьюповторяющееся действие?