我打算创建一个应用程序,使其能够生成pdf报告,其中包含具有不同角色的用户的用户ID。例如,假设我有3个用户角色:经理,销售,客户。具有销售ID的用户将创建具有客户ID的报告,而具有管理器ID的用户将关闭该报告。所有这些ID应在该报告的某个位置可见。现在我的问题是:我应该创建类似于官方Microsoft Contoso tutorial中的数据模型,然后将ApplicationUser ID传递给每个模型(教师,学生),还是应该从默认的身份表传递多个ID? (请参见下图)直接进入报表模型,如果要使用Microsoft教程,则跳过创建多个模型(如Student,Instructor)的部分?
不幸的是,我找不到能够深入创建类似内容的教程。它们涵盖了身份或Microsoft等数据模型的基础。但这可能只是我的Google-fu技能。
通过这种方式或其他方式,我试图在下面说明我的意思。如果可能,请让我知道哪种方法更好(如果有)?为什么?谢谢
方法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; }
}