这是我的映射!
用户管理员1到0..1关系??
Admin类有2个属性:AdministratorID(Int)和AdministratorTitle(String)
一个用户可以是一种管理员状态或无管理员状态
用户到门票1到多关系??
用户可以打开多张票证,但票证只能分配给一个用户。
管理员到Ticket 1到Many关系??
管理员(具有管理员身份的用户)已分配给他修复的故障单。票证应该有一个AdminID来标识分配给它的管理员。
故障单表应包含: TicketID ,管理员(管理员已分配以进行修复)和用户ID (创建故障单的人员)< / p>
User表应包含: UserID , AdminID (0:不是管理员,1:Lvl 1管理员,2:Lvl 2管理员)和 TicketID (用户创建的所有故障单)
Administrator表应具有:AdminID,UserID
我的问题是,我是否需要管理员课程?我是否能够显示具有TicketID,UserID和AdminID的表格(显示同时也是管理员的用户的名称)
这是我到目前为止所做的:
User.cs
public class User
{
public int UserID { get; set; }
public int? AdministratorID { get; set; }
[ForeignKey("AdministratorID")]
public virtual Administrator Administrator { get; set; }
public virtual ICollection<Ticket> Tickets { get; set; }
}
Administrator.cs
public class Administrator
{
public int AdministratorID { get; set; }
public string AdministratorTitle { get; set; }
// public virtual ICollection<Ticket> Tickets { get; set; }
public virtual ICollection<User> Users { get; set; }
}
}
Ticket.cs
public class Ticket
{
public int TicketID { get; set; }
public int UserID { get; set; }
[ForeignKey("UserID")]
public virtual User User { get; set; }
public int AdministratorID { get; set; }
[ForeignKey("AdministratorID")]
public virtual Administrator Administrator { get; set; }
}
答案 0 :(得分:2)
假设一个管理员只有一个用户,则不需要单独的Admin
类或表。 User
已经有一个Admin
标记,因此您知道哪些用户可以并且无法分配给Ticket
。 Ticket
类成为:
public class Ticket
{
public int TicketID { get; set; }
//For Ticket to User relationship many to 1
public int UserID { get; set; }
public virtual User User { get; set; }
//For Administrator to Ticket 1 to many relationship
public int? Administrator{ get; set; }
public virtual User Administrator { get; set; }
Ticket.AdministratorId
和User.Id
之间存在FK关系,我希望Ticket.AdministratorId
可以为空,以便在尚未分配给{的情况下处理这种情况{1}}。
编辑:根据OP的要求:
Ticket