我有3个这样的课程
public abstract class Person
{
[Key]
public int PersonId { get; set; }
public string Name { get; set; }
}
[Table("Roles")]
public class Role : Person
{
public int? ParentId { get; set; }
[ForeignKey("ParentId")]
public virtual Role Parent { get; set; }
public bool IsActive { get; set; }
public int PortalId { get; set; }
[ForeignKey("PortalId")]
public virtual Portal Portal { get; set; }
public virtual ICollection<User> Users { get; set; }
public Role()
{
Users = new Collection<User>();
}
}
[Table("Users")]
public class User:Person
{
[StringLength(100),Required]
public string Family { get; set; }
[StringLength(100), Required]
public string Username { get; set; }
.... Another Properties
public int PortalId { get; set; }
[ForeignKey("PortalId")]
public virtual Portal Portal { get; set; }
public virtual ICollection<Role> Roles { get; set; }
public User()
{
Status = UserStatus.Deactive;
Roles = new Collection<Role>();
}
}
我使用EF 6和TPT继承,现在我有一些问题: 我需要在(Username,PortalId)和(Email,PortalId)上放置唯一的索引,因为我将派生类(用户,角色)中的PortalId设置为不在基类中。顺便说一句,我不会在我的代码中检查Duplicate,我想在数据库上查看它。
现在我需要查询Person以通过PortalId检索所有用户和角色。 * 如何从人员表(联合用户和角色表)以及PortalId条件和两个表* 中检索数据库中的数据。
并且我不会使用查看或存储过程来实现此目标。
我也尝试在基类上忽略PortalId属性,但它对我不起作用。