2015-09-03 3 views
2

Я пытаюсь интегрироваться с ASP.NET Identity и его UserManager. У меня есть собственный пользовательский объект, который я добавил в готовый ApplicationUser. UserManager имеет метод Create() (фактически это в классе UserManagerExtensions), который создает нового пользователя. Проблема в том, что он автоматически сохраняет изменения в базе данных, которая подтверждена here. Мне нравится делать некоторые другие операции в одной и той же транзакции перед сохранением нового пользователя, поэтому я не могу автоматически сохранять изменения UserManager.Предотвратить автоматическое сохранение UserManager Identity ASP.NET

Интересно, что я переопределяю метод SaveChange() в DbContext, который я связываю с UserManager, но он никогда не прерывается в этом методе автоматического сохранения в Create().

Есть ли способ настроить UserManager для автоматического сохранения изменений.

ответ

6

Эта функция уже реализована по умолчанию UserStore. Поэтому вам просто нужно настроить его. В статическом методе ApplicationUserManager.Create() или в любом месте, где вы создаете экземпляр UserStore, установите AutoSaveChanges на false.

public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) 
{ 
    var manager = new ApplicationUserManager(
     new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>()) 
      { AutoSaveChanges = false }); 

    // rest of codes 
} 
+1

Невозможно поблагодарить вас достаточно. – im1dermike

Смежные вопросы