2017-10-29 204 views
0

我已将我的Aspnetusers表扩展为包括FirstName,MiddleName,LastName,StudentID如何在我的Aspnetusers表和自定义表之间建立关系?

我想要一个简单的注册页面,其中管理员将创建学生帐户。那么学生账户 可以添加他们自己的个人联系方式。现在

,我创建了一个包含了FF命名"ContactDetails"自定义表:

public class Contact 
{ 
    [Key] 
    [Display(Name = "User Name")] 
    public string UserName { get; set; } 

    [Display(Name = "Contact Number")] 
    public string StudentContactNumber { get; set; } 

    [Display(Name = "Mother First Name")] 
    public string MotherFirstName { get; set; } 
    [Display(Name = "Mother Middle Name")] 
    public string MotherMiddleName { get; set; } 
    [Display(Name = "Mother Last Name")] 
    public string MotherLastName { get; set; } 
    [Display(Name = "Mother Contact Number")] 
    public string MotherContactNumber { get; set; } 

    [Display(Name = "Father First Name")] 
    public string FatherFirstName { get; set; } 
    [Display(Name = "Father Middle Name")] 
    public string FatherMiddleName { get; set; } 
    [Display(Name = "Father Last Name")] 
    public string FatherLastName { get; set; } 
    [Display(Name = "Father Contact Number")] 
    public string FatherContactNumber { get; set; } 

    [Display(Name = "Emergency First Name")] 
    public string EmergencyFirstName { get; set; } 
    [Display(Name = "Emergency Middle Name")] 
    public string EmergencyMiddleName { get; set; } 
    [Display(Name = "Emergency Last Name")] 
    public string EmergencyLastName { get; set; } 
    [Display(Name = "Emergency Contact Number")] 
    public string EmergencyContactNumber { get; set; } 


    public virtual ApplicationUser User { get; set; } 

} 

IdentityModels类:

public class ApplicationUser : IdentityUser 
{ 
    public string FirstName { get; set; } 
    public string MiddleName { get; set; } 
    public string LastName { get; set; } 
    public string StudentID { get; set; } 
    public string College { get; set; } 

    public virtual System.Collections.Generic.ICollection<Contact> ContactInfo { get; set; } 

    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) 
    { 

     var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 

     return userIdentity; 
    } 


} 

我怎么把我的用户(Aspnetusers.Id)在ContactDetails (User_Id)表当学生已登记? 我如何在它们之间建立关系?

我AdminController:

// GET: /Admin/Edit/Create 
    [Authorize(Roles = "Administrator")] 
    #region public ActionResult Create() 
    public ActionResult Create() 
    { 
     ExpandedUserDTO objExpandedUserDTO = new ExpandedUserDTO(); 

     ViewBag.Roles = GetAllRolesAsSelectList(); 

     return View(objExpandedUserDTO); 
    } 
    #endregion 

    // PUT: /Admin/Create 
    [Authorize(Roles = "Administrator")] 
    [HttpPost] 
    [ValidateAntiForgeryToken] 
    #region 
    public ActionResult Create(ExpandedUserDTO paramExpandedUserDTO) 
    { 
     try 
     { 
      if (paramExpandedUserDTO == null) 
      { 
       return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
      } 

      var Email = paramExpandedUserDTO.Email.Trim(); 
      var UserName = paramExpandedUserDTO.Email.Trim(); 
      var Password = paramExpandedUserDTO.Password.Trim(); 
      // 
      var FirstName = paramExpandedUserDTO.FirstName.Trim(); 
      var MiddleName = paramExpandedUserDTO.MiddleName.Trim(); 
      var LastName = paramExpandedUserDTO.LastName.Trim(); 
      var StudentID = paramExpandedUserDTO.StudentID.Trim(); 
      var College = paramExpandedUserDTO.College.Trim(); 


      // UserName is LowerCase of the Email 
      UserName = Email.ToLower(); 

      // Create user 

      var objNewAdminUser = new ApplicationUser { UserName = UserName, Email = Email, FirstName = FirstName, MiddleName = MiddleName, LastName = LastName, StudentID = StudentID, College = College };    


      var AdminUserCreateResult = UserManager.Create(objNewAdminUser, Password); 

      if (AdminUserCreateResult.Succeeded == true) 
      { 
       string strNewRole = Convert.ToString(Request.Form["Roles"]); 

       if (strNewRole != "0") 
       { 
        // Put user in role 
        UserManager.AddToRole(objNewAdminUser.Id, strNewRole); 
       } 

       return Redirect("~/Admin"); 
      } 
      else 
      { 
       ViewBag.Roles = GetAllRolesAsSelectList(); 
       ModelState.AddModelError(string.Empty, "Error: User "+Email+ " already exists!"); 
        //"Error: Failed to create the user. Check password requirements."); 

       return View(paramExpandedUserDTO); 
      } 
     } 
     catch (Exception ex) 
     { 
      ViewBag.Roles = GetAllRolesAsSelectList(); 
      //ModelState.AddModelError(string.Empty, "Error: " + ex); 
      return View("Create"); 
     } 
    } 
    #endregion 

林不知道我该如何继续?提前致谢。

回答

0

Contact类,你应该有这些:

public int UserId { get; set; } 
public virtual ApplicationUser User { get; set; } 

ApplicationUser类,你应该有这些:

public int ContactId { get; set; } 
public virtual Contact Contact { get; set; } 
相关问题