Несколько идентификаторов пользователей приложений в одном отчете - PullRequest
0 голосов
/ 15 октября 2018

Я планирую создать приложение, которое будет иметь возможность создавать отчеты в формате PDF, содержащие идентификаторы пользователей с разными ролями.Например, скажем, у меня есть 3 роли пользователя: менеджер, отдел продаж, клиент.Пользователь с идентификатором продаж создает отчет с идентификатором клиента, а пользователь с идентификатором менеджера закрывает отчет.Все эти идентификаторы должны быть видны где-то в этом отчете.Теперь мой вопрос: должен ли я создавать модель данных, аналогичную той, которая приведена в официальном руководстве Microsoft Contoso , и просто передавать ApplicationUser Id для каждой модели (Инструктор, Студент) или передавать несколько идентификаторов изТаблицы идентичности по умолчанию (см. рисунок ниже) прямо в модель отчета и пропустите часть создания нескольких моделей, таких как Студент, Инструктор, в случае с учебником Microsoft?

Picture 1

К сожалению, я не смог найти учебник, который бы углубился в создание чего-то подобного.Они либо охватывают основы Identity или Data Models, как Microsoft.Но это могут быть только мои навыки гугл-фу.

Так или иначе, я попытался проиллюстрировать, что я имею в виду ниже.Если возможно, пожалуйста, дайте мне знать, какой подход лучше (если есть?) И почему.Спасибо

Подход 1:

public class Manager{
    public int ManagerId {get; set;}
    public string ManagerName {get; set;}

[Required]
    public string ApplicationUserId { get; set; }
    public virtual ApplicationUser User { get; set; }
}

public class Client{
    public int ClientId {get; set;}
    public string ClientName {get; set;}

[Required]
    public string ApplicationUser Id { get; set; }
    public virtual ApplicationUser User { get; set; }
}

public class Sales{
    public int SalesId{get; set;}
    public string SalesName{get; set;}

    [Required]
    public string ApplicationUserId { get; set; }
    public virtual ApplicationUser User { get; set; }
}

public class Report{
    public int ReportId {get; set;}
    public int SalesId {get; set;}
    public int ClientId {get; set;}
    public int ManagerId {get; set;}
    //other fields
}

Подход 2:

public class User {
    public string UserId {get; set;}
    public string FirstName {get; set;}
    public string LastName {get; set;}
    public string UserRole {get; set;}

    public virutal ICollection<UserReport> UserReports {get; set;}
}

public class Report{
    public int ReportId {get; set;}
    //other fields

    public virutal ICollection<UserReport> UserReports {get; set;}
}

public class UserReports {
    [Key]
    [Column(Order=1)]
    public string UserId {get; set;}
    [Key]
    [Column(Order=2)]
    public int ReportId {get; set;}

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