Я хочу отключить автоматические вызовы метода SaveChanges из UserManager. Я обнаружил, что это можно сделать, установив свойство AutoSaveChanges в UserStore. Но что лучше всего подходит для таких вещей в .NET Core 2.1? Можно ли это сделать в Startup.cs, настроив IdentityBuilder?





Вам необходимо создать класс, наследующий форму Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<IdentityUser>, и установить AutoSaveChanges в false в конструкторе, а затем зарегистрировать этот класс как IServiceCollection перед AddEntityFrameworkStores.
public class CustomUserStore : UserStore<IdentityUser>
{
public CustomUserStore(ApplicationDbContext context)
: base(context)
{
AutoSaveChanges = false;
}
}
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IUserStore<IdentityUser>, CustomUserStore>();
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>()
.AddDefaultUI(UIFramework.Bootstrap4)
.AddEntityFrameworkStores<ApplicationDbContext>();
}
да, UserManager зависит от IUserStore<T>, зарегистрированного services.AddScoped<IUserStore<IdentityUser>, CustomUserStore>()
К сожалению, сейчас я не могу протестировать, но это звучит многообещающе! Я возьму это
И тогда UserManager по умолчанию подберет его и будет использовать?