Как использовать личность aspnetusers - PullRequest
0 голосов
/ 21 января 2019

Я задавал вопрос ранее, но не думаю, что задал его правильно.

В моем приложении asp.net mvc я использую aspnetusers для входа и регистрации.

Если у меня есть другая модель для Сотрудников, содержащая их информацию, как мне соединить эти две модели, чтобы при входе пользователя он получал их информацию из таблицы сотрудников, которая будет использоваться. Я создал модель Employees с сервером sql и использовал модель данных сущности ado.net, чтобы использовать ее в Visual Studio.

Модель сотрудника:

 public partial class Employee
{
    public int UserID { get; set; }
    [Key]
    public int EmployeeID { get; set; }
    public string FullName { get; set; }
    public string Email { get; set; }
    public System.DateTime StartDate { get; set; }
    public int RoleID { get; set; }
    public int ShiftID { get; set; }
    public int AreaID { get; set; }
    public int DisciplineID { get; set; }
    public int SiteID { get; set; }
    public int ALCategory { get; set; }
    public int HoursTaken { get; set; }
    public Nullable<int> AwardedLeave { get; set; }
    public Nullable<int> TotalHoursThisYear { get; set; }
    public int HoursCarriedForward { get; set; }
    public Nullable<int> EntitlementRemainingThisYear { get; set; }
    public string Comments { get; set; }
    public int SickLeaveTaken { get; set; }
    public Nullable<int> SickLeaveEntitlement { get; set; }
    public Nullable<int> SickLeaveEntitlementRemaining { get; set; }
    public int StudyLeaveEntitlement { get; set; }
    public int StudyLeaveTaken { get; set; }
    public Nullable<int> StudyLeaveRemaining { get; set; }
    public int ExamLeaveTaken { get; set; }
    public int ForceMajeure { get; set; }
    public int BereavementLeaveTaken { get; set; }
    public int MaternityLeaveTaken { get; set; }
    public int ParentalLeaveTaken { get; set; }
    public int AdoptionLeaveTaken { get; set; }
    public string ManagerEmail { get; set; }
    public string AreaManagerEmail { get; set; }

    public virtual Area Area { get; set; }
    public virtual Discipline Discipline { get; set; }
    public virtual Shift Shift { get; set; }
    public virtual Site Site { get; set; }
    public virtual Employee Employee1 { get; set; }
    public virtual Employee Employee2 { get; set; }
}

И модель входа в систему:

public class LoginViewModel
{
    [Required]
    [Display(Name = "Email")]
    [EmailAddress]
    public string Email { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
}

Так я могу соединить эти два? Имеет ли значение, что я использую базу данных первой модели? Могу ли я использовать внешний ключ для подключения по электронной почте?

Я хочу использовать его, например, для фильтрации таблицы сотрудников, чтобы показать только сотрудников, которые имеют одинаковый siteID для пользователя, вошедшего в систему.

Поэтому, когда пользователь входит в систему, я хочу, чтобы в таблице HTML для сотрудников он видел только сотрудников с тем же сайтом, что и у них.

1 Ответ

0 голосов
/ 21 января 2019

После успешного входа в систему вы получите идентификатор AspNetUser. Возьмите ссылку на внешний ключ для столбца Id из таблицы AspNetUser в вашей таблице Employee. Делая это, вы можете достичь ожидаемого результата. Просто еще одну вещь, которую вам нужно добавить в модель сотрудника, как указано ниже:

public virtual ApplicationUser ApplicationUser { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...