考虑这个查询
Select (some properties from all 3 Tables)
    From PageWidgets pw LEFT JOIN PageWidgetDefinition pwd 
       On pwd.ID = pw.WidgetID
    LEFT JOIN PageWidgetSkin pws 
       ON pws.ID  = pw.SkinInstanceID 
    LEFT JOIN PageWidgetSkinRows pwsr 
       On pwsr.SkinID = pws.ID Where pw.PageID = *x*
    Order By (some properties)
在旧的实现中,它读取页面上的小部件及其皮肤,我有一个函数循环返回的行,并通过其皮肤及其小部件实例创建一个页面小部件。每个小部件的皮肤都有三行,最后我们收到一个列表,其中包含操作所需的一切
我在 EF 有这些课程
public partial class Widget: BaseEntity {
    public int ID { get; set; }
    public int PageTemplateID { get; set; }
    public PageTemplate PageTemplate { get; set; }
    public int WidgetDefinitionID { get; set; }
    public WidgetDefinition WidgetDefinition { get; set; }
    public int WidgetSkinID { get; set; }
    public WidgetSkin WidgetSkin { get; set; }
            //other properties omitted
}
public partial class WidgetDefinition: BaseEntity {             
    public int ID { get; set; }
    public string Title { get; set; }
            //other properties omitted
    public virtual ICollection<Widget> Widgets { get; set; }
}
public partial class WidgetSkin: BaseEntity {
    public int ID { get; set; }
    public string Name { get; set; }
            //other properties omitted
    public virtual ICollection<Widget> Widgets { get; set; }
    public virtual ICollection<WidgetSkinRow> WidgetSkinRows { get; set; }
}
public partial class WidgetSkinRow: BaseEntity {
    public int ID { get; set; }
    public int WidgetSkinID { get; set; }
    public virtual WidgetSkin WidgetSkin { get; set; }
}
我需要一个额外的业务层来做同样的事情吗?
使用 EF,我只想去 DB 一次。