TPT继承并忽略基类中的属性

时间:2014-04-04 10:04:46

标签: c# entity-framework

我有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属性,但它对我不起作用。

0 个答案:

没有答案