在 ASP.NET Core Web ASPI 中,我正在實作 IndentityDbContext 和 Employee 模型:
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 的欄位,它與 ApplicationUser 的 Id 無關。插入后立即:
ApplicationUser 用戶 = new ApplicationUser()
我想打電話給:
等待 _unitOfWork.EmployeeRepository.Insert(employee);
并使用來自 ApplicationUser 的 Id 更新員工模型 UserId。
我如何實作這一目標?
謝謝
uj5u.com熱心網友回復:
抱歉,我洗掉了那篇文章。我希望您可以通過以下方式獲取應用程式用戶 ID,然后更新員工。
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;
}
uj5u.com熱心網友回復:
您是否嘗試按如下方式訪問它;
try
{
await _unitOfWork.EmployeeRepository.Insert(employee);
await _unitOfWork.SaveChangesAsync();
var employeeId = employee.id;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/372573.html
