学習目的で Sitecore 7 Autohaus デモをダウンロードしました。Autohaus コードに、モデル Car があることに気付きました。Sitecore が Car モデル (コード) と CarModel テンプレート (sitecore テンプレート) の間のマッピング方法をどのように知っているか知りたいです。
1 に答える
車のテンプレートと車のオブジェクト モデルの間には、さらにいくつかの手順があります。
Sitecore 7 の主な機能の 1 つは、組み込みの検索機能です。car テンプレートから作成された項目が保存されると、その情報は検索インデックス (Lucene または Solr) に保存されます。
Car
モデルは、テンプレートまたはデータベース アイテムから直接マップされるのではなく、作成された検索ドキュメントからマップされます。
たとえば、LINQレイヤーを使用する場合
var index = ContentSearchManager.GetIndex("sitecore_master_index");
using (var context = index.CreateSearchContext())
{
var query= context.GetQueryable<Car>()
.Where(item => item.Seats == 2);
}
Sitecore は検索を実行し、「車」オブジェクトを取得して、Sitecore の を使用して検索結果からの情報を取り込みますDocumentMapper
。
これにより、オブジェクトのパブリック プロパティとインデクサーが設定されCar
ます。はDocumentMapper
、オブジェクト型 (DateTime / int など) との間のキャストを処理します。
はDocumentMapper
一致するフィールド名でプロパティをマップしようとしますが、オブジェクト プロパティに属性を配置して、Sitecore がオブジェクトに明確にマップできるようにすることができます。
この例では、Sitecore にフィールド 'modelkey' をプロパティ ModelId にマップするように指示しています。
[IndexField("modelkey")]
public string ModelId { get; set; }
ほとんどのページで Autohaus で使用されている LINQ クエリを見ることができ、Sitecore 7 がどのように機能するかを学習するための優れたリソースになるはずです。
Sitecore 7 のさまざまな部分の詳細については、http ://www.sitecore.net/Community/Technical-Blogs/Sitecore-7-Development-Team.aspx を参照してください。