鉴于我有一些具有层次结构的实体:
public class Question : BaseElement
{
public Section Section => (Section)Parent;
}
public class Section: BaseElement
{
public OtherThing OtherThing => (OtherThing)Parent;
}
public abstract class BaseElement
{
public int Id { get; set }
public virtual BaseElement Parent { get; protected set; }
}
考虑到我有问题的时候,我会像这样写一些linq:
var questions = dataContext.Questions.Where(q => q.Section.Id == 5);
抱怨Question
没有Section
。这是正确的,它实际上有一个父。是否有一个属性可以添加到Section
上的Question
属性中,这样当它在Linq中使用时,它实际上会转换为" Parent"在SQL?
我不希望事先.ToList()
我的查询,因为这样效率低下而且我不想说dataContext.Questions.Where(q => q.Parent.Id == 5);
,因为这不清楚,特别是当我将会最多连续五次(Question.Parent.Parent.Parent等...);
我尝试[Column("Parent")]
,但仍在寻找Section