我创建了web api 2项目,该项目创建了一个本地数据库,其中有一个表"AspNetUser"。我已将这些表与我自己的数据库合并。在我的数据库中,我有一个表"员工信息",它将存储该员工的所有信息,除了他的电子邮件、密码和用户名,所有其他信息都将存储在"雇员信息"表中。
这是预先编写的注册用户代码:
[AllowAnonymous]
[Route("Register")]
public async Task<IHttpActionResult> Register(RegisterBindingModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var user = new ApplicationUser() { UserName = model.UserName, Email = model.Email};
IdentityResult result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
var currentUser = UserManager.FindByName(user.UserName);
var roleresult = UserManager.AddToRole(currentUser.Id, model.SelectedRole);
}
else if (!result.Succeeded)
{
return GetErrorResult(result);
}
return Ok();
}
这是我自己注册用户的逻辑:
[ResponseType(typeof(EmployeeInformation))]
[ActionName("EmployeeInfo")]
[DeflateCompression]
public IHttpActionResult PostEmployeeInformation(EmployeeInformation EmployeeInfo)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.EmployeeInformations.Add(EmployeeInfo);
db.SaveChanges();
那么,我如何将电子邮件、密码和用户名存储在"AspNetUser"表中,并将所有其他信息(姓名、父亲姓名、dob等)存储在"EmployeeInformation"表中。谢谢
只需添加ApplicationUser
和EmployeeInformation
实体之间的关系:
public class ApplicationUser: IdentityUser
{
// other properties
public int EmployeeInformationID {get;set;}
public virtual EmployeeInformation EmployeeInformation {get;set;}
}
对EmployeeInformation
类执行相同操作
public class EmployeeInformation
{
// other properties
public string UserID {get;set;}
public virtual ApplicationUser User {get;set;}
}
现在您有了用户额外信息的seprate类,例如您可以写:
public IHttpActionResult PostEmployeeInformation(EmployeeInformation employeeInfo)
{
employeeInfo.UserID="your desired user id, current user id for example";
db.EmployeeInformations.Add(employeeInfo);
db.SaveChanges();
}