【发布时间】:2017-06-15 17:21:24
【问题描述】:
我有以下课程:
public abstract class Area
{
public long Id { get; set; }
[Required]
public string Name { get; set; }
public ICollection<Asset> Assets { get; set; }
}
public class AreaWithParent : Area
{
public AreaAsParent ParentArea { get; set; }
public long ParentAreaId { get; set; }
}
public class AreaAsParent : Area
{
public ICollection<AreaWithParent> AreasWithParent { get; set; }
}
public class Asset
{
public long Id { get; set; }
public long? AreaId { get; set; }
public Area Area { get; set; }
}
基本上,我有一个资产,它与一个区域相关联。并且有不同类型的区域可以适应层次结构。
我现在想查询与特定区域直接关联或通过其父区域间接关联的所有“资产”。是否可以进行这样的查询?
我觉得这样的事情,应该是可以的:
var areaId = /* the area id I want to query for */
var assets = await ctx.Assets
.Where( x => x.AreaId == areaId || ( x.Area as AreaWithParent ).ParentAreaId == areaId )
.ToListAsync( cancellationToken );
但事实并非如此。有可能做这样的事情吗?
【问题讨论】:
-
当您尝试运行查询时会发生什么?
-
感谢您的评论。我进一步调查了这个问题。请参阅下面的答案。