2011-01-11 11 views
3

同じクラスのContentItemsの任意の数をN2のページに追加できますか?そして彼らは入れ子にすることができますか?N2 CMS:ContentItemのネストされたコレクションは可能ですか?

I.e. N2のプロパティとしてContentItemsのコレクションを定義する方法はありますか?可能であればこれらをネストして、データに対してより意味のあるクエリを実行することもできます。 (尋ねるのが難しい巨大なEditableTextRegionsの代わりに

私は現在、以下のモデルを「理想的」として持っています。これはN2化することができますか?あなたのプロパティで代わりに取得/ SetDetailの取得/ SetDetailCollection使用 - はい

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

は(私は明確にするための属性とN2スタイルのゲッター/セッターをオフに残してきました)。

FYI 2.1を使用している場合は、プロパティーvirtualを作成してGet/SetDetailを終了することができますが、これはDetailCollectionメソッドでは機能しているかどうかはわかりませんが、

私はあなたが提案しているものに注意しています。このようなコレクションを入れ子にすると、SELECT N+1が問題を引き起こす可能性があります。デザインを変更できない場合は、N2のデータベースキャッシング(これはNHibernateの第2レベルキャッシュ)を有効にすることをお勧めします。できるだけ多くのデータをデータベースに保存しないでください。

+0

答えをいただきありがとうございます。子どものコレクションをループし、メンバーを適切なタイプにキャストすることで、今は別の方法で動作しています。また、当面はバージョン2.0に固執しています:(私はすぐに説明するためにいくつかのコードを投稿します... –

関連する問題