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