ASP.NET核心-如何将IdentityDbContext中的ApplicationUser id作为UserId插入



在ASP.NET核心Web ASPI中,我正在实现缩进DbContext和员工模型:

public Employee FromEmployeeCreateDtoToEmployee(EmployeetCreateDto employeeCreateDto)
{
if (employeeCreateDto == null)
{
return null;
}
return new Employee
{
EmployeeName = employeeCreateDto.EmployeeName,
AccountNumber = employeeCreateDto.AccountNumber,
Password = "12345",
ConfirmPassword = "12345",
Email = employeeCreateDto.Email,
UserName = employeeCreateDto.UserName,
};
}

服务:

public async Task<Employee> Post(EmployeeCreateDto employeeCreateDto)
{
var mapper = new EntityMapper();
var employee = mapper.FromEmployeeCreateDtoToEmployee(employeeCreateDto);
try
{
await _unitOfWork.EmployeeRepository.Insert(employee);
await _unitOfWork.SaveChangesAsync();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
try
{
ApplicationUser user = new ApplicationUser()
{
UserName = employee.UserName,
PasswordHash = employee.Password
};
IdentityResult result = await _userManager.CreateAsync(user, employee.ConfirmPassword);
if (result.Succeeded)
{
Task<IdentityResult> roleResult;
//Check that there is an Employee role and create if not
Task<bool> hasEmployeeRole = _roleManager.RoleExistsAsync(UserRoles.Employee);
hasEmployeeRole.Wait();
if (!hasEmployeeRole.Result)
{
ApplicationRole roleCreate = new ApplicationRole();
roleCreate.Name = UserRoles.Employee;
roleResult = _roleManager.CreateAsync(roleCreate);
roleResult.Wait();
}
Task<IdentityResult> newUserRole = _userManager.AddToRoleAsync(user, UserRoles.Employee);
newUserRole.Wait();
try
{
//Commit the transaction
await _context.SaveChangesAsync();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
}
catch (Exception e)
{
throw new Exception(e.Message);
}
return employee;
}

员工模型有一个名为UserId的字段,该字段与Id无关来自ApplicationUser。插入后立即:

ApplicationUser user=新ApplicationUser((

我想调用:

await_unitOfWork.EmplyeeRepository.Insert(employee(;

并使用ApplicationUser中的Id更新Employee Model UserId。

我该如何做到这一点?

感谢

很抱歉,我删除了那篇文章。我希望您可以通过以下方式获得应用程序用户id,然后更新Employee。

var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context)); 
var user = new ApplicationUser() { "Pass your Application user parameters"}; 
var result = manager.Create(user, "Your Password");  
if (result.Succeeded) 
{     
string newId = user.Id; 
} 

您是否尝试按以下方式访问它;

try
{
await _unitOfWork.EmployeeRepository.Insert(employee);
await _unitOfWork.SaveChangesAsync();
var employeeId = employee.id;
}

相关内容

最新更新