Entityframework 使用自定义身份用户从 api 注册身份

Entityframework identity register from api with custom identityUser

我需要用我的 Asp.Net API 创建一个 ApplicationUser(从 IdentityUser 派生的 class),我需要在与 [=26= 相同的数据库中创建它] MVC 使用。我的请求有效,因为它给了我 200 个响应,但我的用户不在 EntityFramework.

自动生成的 AspNetUser table 中
[HttpPost]
    public async Task<ActionResult> Register(RegisterDTO register)
    {
        ApplicationUser user = new ApplicationUser();
        if (register.Password == register.PasswordConfirm)
        {
            user.UserName = register.Email;
            user.Email = register.Email;
        }
        else
        {
            return StatusCode(StatusCodes.Status500InternalServerError, new { Message = "Le mot de passe et sa confirmation ne sont pas identiques." });
        }
        var identityResult = await userManager.CreateAsync(user, register.Password);
        if (!identityResult.Succeeded)
        {
            return StatusCode(StatusCodes.Status500InternalServerError, new { Error = identityResult.Errors });
        }
        return Ok();
    }

这是我的 api

注册
services.AddDbContext<CegesDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
        services.AddScoped<IUnitOfWork, UnitOfWork>();
        services.AddScoped<ICegesServices, CegesServices>();
        services.AddIdentity<ApplicationUser, IdentityRole>()
                       .AddDefaultTokenProviders().AddDefaultUI()
                       .AddEntityFrameworkStores<CegesDbContext>();

这是我 api

的启动
    public class ApplicationUser : IdentityUser
    {
        public List<Entreprise> Entreprises { get; set; }

    }

这是我在 Core 项目中的 ApplicationUser class

我不知道该做什么。我需要为我的 ApplicationUser 创建我的 on Create 方法还是我遗漏了什么?

检查 DefaultConnection 是否指向 appsettings.json 和 appsettings.Developer.json 中的正确数据库(如果该文件存在)。

我还假设 userManager.CreateAsync 工作正常并且只是 AspNetCore.Identity 的一部分。

我的下一个建议是不要像这样将模型/数据访问层拆分到两个项目中。而是创建一个共享项目并从中引用您的其他项目。

在 Visual Studio 中,这可以通过右键单击项目、选择添加、选择项目引用并选中要引用的项目来完成。

在这里,您可以管理整个数据访问层 (DAL),并在任何其他项目中引用它,而无需担心在可能冲突的两个位置维护它。

如果数据库迁移记录不匹配,则无法使用用户迁移更新数据库。您需要从现有位置添加用户,假设您首先使用代码是因为 AspNetUser table.

长话短说;博士 将您的数据访问层(模型、dbContext、迁移等)添加到 C# 共享项目并在您的 MVC 和 Web API 项目中引用它以保持一致性并减少未来的维护工作。