EF

时间:2015-11-20 12:05:47

标签: entity-framework inheritance

我有模特"用户"具有类型"权限":

的权限集合
    public class User : IUser<int>, IUser<string>
{
        public virtual ICollection<Permission> Permissions
        {
            get { return _permissions ?? (_permissions = new Collection<Permission>()); }
            set { _permissions = value; }
        }
     ...
}

我有遗产:

public abstract class EntityPermission : Permission
    {        
        public AccessedEntity AccessedEntity { get; set; }
     ...
    }


public class ReadEntityPermission : EntityPermission
{
    public bool AllowAll { get; set; }
     ...
}

当我请求用户

DbSet.Include(c => c.Permissions)

我获得了 ReadEntityPermission 的所有简单字段(AllowAll == true)的权限,但属性 AccessedEntity为空。 有没有办法加载继承子项的引用属性?

p.s。:dbContext.Configuration.ProxyCreationEnabled和dbContext.Configuration.LazyLoadingEnabled是真的

1 个答案:

答案 0 :(得分:1)

包含应该能够接受字符串作为参数。试试这个:

DbSet.Include("Permissions.AccessedEntity")

更新: 您无法在Permission类上访问AccessedEntity属性,因为该类没有该属性。您必须使用EntityPermission。像这样:

public virtual ICollection<EntityPermission> Permissions