私のプロジェクトでは、Sitecore7 MVC、Solr、Glass Mapper を使用しています。
「ContentSearch」インデックスには、サイトコア テンプレートで使用されるほぼすべてのフィールドが含まれています。GlassMapper クラスをモデル (サイトコア フィールドであるプロパティ以外はほとんど含まれていません) として使用し、クエリを実行しています。ここで説明されているように、基本的に「カスタム結果クラスの使用」を行っています:http://glass.lu/docs/tutorial/sitecore/tutorial25/tutorial25.html
これは想定どおりに機能します。
私の質問は:
インデックスが存在する限り、Solr インデックスを使用してクラス プロパティ (通常はサイトコア フィールド) を設定していますか (これが必要です)。
また
Field Values を取得するためにサイトコアに行くのですか? (これは非効率的だと思います。その場合、カスタム クラスを作成し、それらをループして glassMapper クラスにデータを入力します。これは、ビューで GlassMapper クラスをモデルとして使用したためです)
たとえば、私のモデルの1つは次のようになります。
[SitecoreType]
public class MyAwesomeModel
{
[SitecoreId]
[IndexField("_id")]
public virtual Guid Id { get; set; }
[SitecoreInfo(SitecoreInfoType.Language)]
[IndexField("_language")]
public virtual string Language { get; set; }
[TypeConverter(typeof(IndexFieldItemUriValueConverter))]
[XmlIgnore]
[IndexField("_uniqueid")]
public virtual ItemUri Uri { get; set; }
[SitecoreInfo(SitecoreInfoType.Version)]
public virtual int Version
{
get
{
return Uri == null ? 0 : Uri.Version.Number;
}
}
[SitecoreField(FieldName="MyRichtextField")]
[IndexField("MyRichtextField")]
public virtual string RichTextContent { get; set; }
[SitecoreInfo(SitecoreInfoType.Url, UrlOptions = SitecoreInfoUrlOptions.LanguageEmbeddingNever)]
public virtual string Url { get; set; }
}