3

N2中的页面可以添加任意数量ContentItems的相同类吗?它们可以嵌套吗?

即有没有办法将集合定义ContentItems为 N2 中的属性?如果可能的话,我还想嵌套这些,以便我们可以对数据运行更有意义的查询。EditableTextRegions(即,而不是使用很难查询的巨大。)

我目前有以下模型作为“理想”,这可以 N2ified 吗?(为了清楚起见,我省略了属性和 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
}
4

1 回答 1

4

是的 - 在您的属性中使用 Get/SetDetailCollection 而不是 Get/SetDetail。

仅供参考,如果您使用的是 2.1,您可以只创建属性virtual并省略 Get/SetDetail - 虽然不确定这是否适用于 DetailCollection 方法,但您可以将两者混合使用。

不过,我会小心您的提议-像这样的嵌套集合可能会导致您出现SELECT N+1问题。如果您无法更改设计,那么我建议您打开 N2 的数据库缓存(这只是 NH​​ibernate 的二级缓存),这种方式将尽可能多地保存在内存中而不会过多地访问数据库。

于 2011-01-12T08:56:46.750 回答