Include应该能够接受字符串作为参数。试试这个:
我有一个模型"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是真正的
DbSet.Include("Permissions.AccessedEntity")
更新:您无法访问Permission类的AccessedEntity
属性,因为该类没有该属性。您必须使用EntityPermission
。像这样:
public virtual ICollection<EntityPermission> Permissions