我想禁用UserManager的自动SaveChanges方法调用。我发现可以通过设置UserStore的AutoSaveChanges属性来做到这一点。但是,.NET Core 2.1中此类事情的最佳实践是什么?通过配置IdentityBuilder,可以在Startup.cs中进行操作吗?

最佳答案

您需要创建一个继承形式Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore<IdentityUser>的类,并在构造函数中将AutoSaveChanges设置为false,然后在IServiceCollection之前将该类注册到AddEntityFrameworkStores

public class CustomUserStore : UserStore<IdentityUser>
{
    public CustomUserStore(ApplicationDbContext context)
        : base(context)
    {
        AutoSaveChanges = false;
    }
}


启动文件

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>();
}

关于c# - .NET Core 2.1中UserManager的AutoSaveChanges,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50846329/

10-10 19:46