我已经下载了Sitecore 7 Autohaus演示版用于学习目的。 我注意到在Autohaus代码中,有一个模型 - Car。 我想知道sitecore如何知道如何在Car model(代码)和CarModel模板(sitecore模板)之间进行映射。
答案 0 :(得分:2)
汽车模板和汽车对象模型之间还有一些步骤。
Sitecore 7的主要功能之一是嵌入式搜索功能。当保存从汽车模板创建的项目时,该信息存储在搜索索引(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将执行搜索,然后使用“Car”对象,并使用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