EF中包含和继承



我有一个模型"User",它具有类型为"Permission"的权限集合:

    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为null。有什么方法可以加载继承子项的引用属性吗?

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

Include应该能够接受字符串作为参数。试试这个:
DbSet.Include("Permissions.AccessedEntity")

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

public virtual ICollection<EntityPermission> Permissions

最新更新