可以在N2中的页面中添加任意数量的同一类ContentItems
吗?它们可以嵌套吗?
即。有没有办法在N2中定义ContentItems
作为属性的集合?如果可能的话,我也想嵌套它们,这样我们就可以针对数据运行更有意义的查询。 (即,不要使用难以查询的巨大EditableTextRegions
。)
我目前将以下型号视为“理想”,这可以通过N2化吗? (为了清楚起见,我省略了属性和N2风格的getter / setter)
public class Link : ContentItem
{
public string Text { get; set; }
public string Title { get; set; }
public string Url { get; set; }
}
public class Panel : ContentItem
{
public string Title { get; set; }
public string Text { get; set; }
public List<Link> Links { get; set; } // Should show an expandable number of “Link” editors in the CMS editor
public string ImageUrl { get; set; }
}
public class Page : ContentItem
{
public string Title { get; set; }
public string BodyText { get; set; }
public List<Panel> Panels { get; set; } // Should show an expandable number of “Panel” editors in the CMS editor
}
答案 0 :(得分:4)
是 - 在您的媒体资源中使用Get / SetDetailCollection代替Get / SetDetail。
仅供参考,如果您使用的是2.1,您可以创建属性virtual
并取消Get / SetDetail - 但不确定这是否适用于DetailCollection方法,但您可以将两者混合使用。
我会小心你提出的建议 - 像这样的嵌套集合可能会导致你SELECT N+1问题。如果你不能改变设计,那么我建议打开N2的数据库缓存(这只是NHibernate的二级缓存),这种方式尽可能保留在内存中,而不会过多地访问数据库。