我有以下结构:
有几种角色(用户类型)。其中一个类型(名为Driver)应该有一个子表,其他 - 不是。
我的应用程序用户代码:
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// bla-bla-bla
return userIdentity;
}
public int? CompanyId { get; set; }
public string SMSnumber { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
当我使用角色驱动程序创建新用户时,我必须执行以下操作(不是真正的代码,例如在一个地方):
var user = new ApplicationUser { UserName = model.AspNetUserName, CompanyId = companyId, FirstName = model.FirstName, LastName = model.LastName };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
var roleResult = await UserManager.AddToRoleAsync(user.Id, RoleStaticStrings.ROLE_DRIVER);
if (roleResult.Succeeded)
{
var driver = mapper.Map<DriverPersonalInfoVM, Driver>(model, new Driver
{
CompanyId = companyId,
UserId = user.Id,
RecordDate = DateTime.UtcNow,
Active = true
});
db.Drivers.Add(driver);
try
{
db.SaveChanges();
}
catch (Exception ex)
{
await UserManager.DeleteAsync(user);
}
所以,我必须分开为2个请求创建用户的请求:
- 创建asp.net身份用户
- 创建驱动程序记录
醇>
我认为,每个人都理解缺点 - 2个请求代替一个,而不是同一个交易......
如何将“包含”到ApplicationUser并且不强制使用它?