在本文中,讨论如何使用Sitecore.Data.Items.Item并对这些项执行CRUD(创建,读取,更新和删除)操作。我还将介绍如何使用Glass和Fortis类库进行相同的操作,这些操作都是对象关系映射器(ORM)的功劳。
CRUD(创建)
首先,我们将讨论如何创建新项目。下面的示例显示了如何创建项目。在此示例中没有太多错误检查,但您的代码应检查当前模板项是否已设置以及父项是否也为空。否则你的代码会给网站用户带来不友好的错误,这是不理想的。要注意的第二件事是我们正在调用ItemUtil.ProposeValidItemName,这个帮助器方法将接受你传入的字符串,然后吐出一个可以与Sitecore一起使用的Item Name(换句话说,它会删除特殊字符)和更多)。
1
2
3
4
5
6
7
8
9
10
|
using (new SecurityDisabler())
{
TemplateItem templateItem = Sitecore.Context.ContentDatabase.GetTemplate(new ID("{7798CD59-76DC-4869-8BDA-2952A64B8687}"));
Item parentItem = Sitecore.Context.Database.GetItem(new ID("{7798CD59-76DC-4869-8BDA-2952A64B8687}"));
Item newItem = parentItem.Add(ItemUtil.ProposeValidItemName("Some Name"), templateItem);
newItem.Editing.BeginEdit();
newItem.Fields["Whatever"].Value = "";
newItem.Editing.EndEdit();
}
|
创建一个新项目是一种相当直接的方法,在Glass Mapper中创建项目也是如此。下面的例子是你如何做到这一点。与上述方法非常相似,但是您不需要指定模板,即在创建项目时由Glass自动完成,因为它可以从您正在使用的POCO模型中确定。此外,如果您正在使用TDS和Glass,或者只使用基本的Glass而不自动生成Glass模型,那么您需要确保模型具有您可以指定的某种项目名称。如果使用TDS自动生成玻璃模型,则需要扩展GlassBase,以包含ItemName的属性。
1
2
3
4
5
6
7
8
|
var service = new SitecoreService("master");
IPage page = new Page();
page.ItemName = ItemUtil.ProposeValidItemName("Some String");
page.MetaTitle = "Whatever";
service.Create<IPage, IHomepage>(site, page);
|
最后,如果您还没有使用过Glass,那么幸运的是还有其他选择使用Sitecore。另一个流行的ORM是Fortis,它与Glass有很多相似之处。让我们快速了解一下如何在Fortis中创建新项目:
1
2
3
4
5
6
7
|
public class MyClass
{
private void Process(IItemFactory itemFactory)
{
IPage item = _itemFactory.Create<IPage>(/* Guid or path */, "Item Name");
}
}
|
就这一部分而言,请随意分享您对这些创建新项目的方法的看法。我想我可能会写更多关于如何使用其他ORM或Object Mapper(如Synthesis)创建项目,类似于Glass for Sitecore,所以这个博客系列将是您创建项目相关参考的内容之一。