我正在尝试与ASP.NET Identity及其UserManager集成。我有自己的自定义用户对象,我已经添加到开箱即用的ApplicationUser中。 UserManager有一个Create()方法(实际上它在UserManagerExtensions类中),用于创建新用户。问题是它会自动将更改保存到已确认here的数据库中。我想在保存新用户之前在同一个“事务”中做一些其他操作,所以我不能让UserManager自动保存更改。
有趣的是,我正在覆盖我正在关联到UserManager的DbContext中的SaveChange()方法,但它永远不会在Create()中自动保存的方法中断。
是否有任何方法可以将UserManager配置为不自动保存更改。
答案 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
}