一份报告中包含多个应用程序用户ID

时间:2018-10-14 22:18:58

标签: c# asp.net-mvc asp.net-mvc-5

我打算创建一个应用程序,使其能够生成pdf报告,其中包含具有不同角色的用户的用户ID。例如,假设我有3个用户角色:经理,销售,客户。具有销售ID的用户将创建具有客户ID的报告,而具有管理器ID的用户将关闭该报告。所有这些ID应在该报告的某个位置可见。现在我的问题是:我应该创建类似于官方Microsoft Contoso tutorial中的数据模型,然后将ApplicationUser ID传递给每个模型(教师,学生),还是应该从默认的身份表传递多个ID? (请参见下图)直接进入报表模型,如果要使用Microsoft教程,则跳过创建多个模型(如Student,Instructor)的部分?

Picture 1

不幸的是,我找不到能够深入创建类似内容的教程。它们涵盖了身份或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; }
}

0 个答案:

没有答案