防止ASP.NET Identity的UserManager自动保存

时间:2015-09-03 19:08:53

标签: c# asp.net asp.net-identity asp.net-identity-2

我正在尝试与ASP.NET Identity及其UserManager集成。我有自己的自定义用户对象,我已经添加到开箱即用的ApplicationUser中。 UserManager有一个Create()方法(实际上它在UserManagerExtensions类中),用于创建新用户。问题是它会自动将更改保存到已确认here的数据库中。我想在保存新用户之前在同一个“事务”中做一些其他操作,所以我不能让UserManager自动保存更改。

有趣的是,我正在覆盖我正在关联到UserManager的DbContext中的SaveChange()方法,但它永远不会在Create()中自动保存的方法中断。

是否有任何方法可以将UserManager配置为不自动保存更改。

1 个答案:

答案 0 :(得分: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
}