sitecore开发入门Sitecore的CRUD操作 - 第二部分
在上一篇(sitecore开发入门Sitecore的CRUD操作 - 第一部分)中我们讨论了如何使用Sitecore Item API,Glass,Fortis和Synthesis在Sitecore中创建项目。在这篇文章中,我们将重点关注Item API,在下一个会话中,我们将更多地关注ORM包装器以读取该数据。分裂的原因是因为Sitecore Item API在所有其他ORM中都是必不可少的(尽管ORM的一些提取了Sitecore Item API的复杂性)。
Sitecore Item API
使用Sitecore API从Sitecore中提取项目时,实际上有四种方法:Sitecore查询,快速查询,Lucene查询或ItemProvider中的直接GetItem调用。
Sitecore查询
一般情况下,您现在希望避免使用Sitecore Query从Sitecore提取数据,但有时在Sitecore内容编辑器中它可能有意义,尤其是在将其用作Multilist或其他类型的item字段的Source时。下面显示了一些如何编写典型Sitecore查询的示例。我希望将来写一篇关于编写Sitecore查询的完整文章,即使我认为现在有更好的方法来阅读sitecore项目,知道如何编写Sitecore查询仍然很重要,因为它们在整个Sitecore平台上使用。
一个基本的Sitecore查询:
上面的示例表示您可能创建并运行的相当常见的Sitecore查询。有一点需要知道,你必须在查询中转义连字符,为此,你可以将它们包装在#符号中,如上所示。
上面的示例与第一个示例类似,不同之处在于// *而不是/ *。// *将查看当前文件夹并递归搜索该文件夹下的每个文件夹,以查找您要搜索的任何条件。在此示例中,您将以递归方式为内容项下面的所有内容构建项列表(这样效率极低)。/ *只会查找当前项目的子项,然后看起来不比那更深。
在最后一个示例中,这将展示如何递归搜索当前内容文件夹的所有后代,并仅按具有与您传入的过滤器匹配的模板ID的项过滤结果。
关于Sitecore查询的一些其他限制是,它只能返回一定数量的结果。默认情况下,它只返回100个结果,但显然您可以通过修补以下配置设置来增加该数量:
快速查询
快速查询与Sitecore查询非常相似,但在使用数千个项目时,与使用较小的项目子集(通常少于100个项目)相比,快速查询是更好的选择。然而,快速查询还有一些限制。由于它的工作原理,它会在找到结果时返回结果,并且它们不会按照它们在树中找到的顺序出现。这可能会导致问题,这也是快速查询作为一种拉取数据的方式并不常见的主要原因之一。如果您正在使用内容树但不能使用一些更好的选项,例如我们将在一秒钟内描述的Lucene,并且您只需要所有数据,那么快速查询可能是一个不错的选择。
快速查询的另一个问题是Sitecore查询实际上允许更多选项来过滤结果,而快速查询将限制您可以返回的内容。语义上唯一真正的区别是,不是在查询前加上“query:”,而是用“fast:”作为前缀。
Lucene与SOLR
在我看来,这是从您的网站提取数据的首选方式,尤其是面向您网站部分的访问者,这些部分通常会看到更多的流量。Lucene与众不同,它实际上并不是Sitecore技术,只是Sitecore和Lucene之间的结合,它允许更快的方式从树中的任何地方获取项目(只要它们在索引中)。索引是从树中构建的文档集合。通常,当您向树中添加内容时,项目将添加到索引中(保存时为master,发布时为Web索引)。如果您有自定义索引,则这些索引可能会因您使用的索引重建策略而异。
要开始在lucene中编写查询,您需要使用Linq to Lucene提供程序,以便您可以编写简单的.net linq语句,这些语句将在后台转换为Lucene查询。要开始,您可以编写如下内容:
从上面的例子中可以注意到一些事项。首先是第一行,该行使用sitecore_web_index构建搜索上下文。但是,您可能并不总是想要使用此索引。如果您希望索引根据当前上下文项的上下文而变化,您可以使用:
此替代方法允许您使用上下文项来确定使用的索引。因此,如果您正在使用体验编辑器并且它正在提取数据,那么它将是该上下文中的主索引,否则如果您正在查看该网站,则您将使用Web索引。
其次,要讨论的一个重要主题是如何查询自定义字段或模板中的数据。因此,从上面的示例中,我们使用了GetQueryable <SearchResultItem>()。SearchResultItem是一种基本类型,表示您可能希望从索引中查询的公共项字段。但是,您可能会发现需要搜索其他字段,例如,如果您有文章模板,并且需要基于类别进行搜索,该类别是在网站核心中存储ID的DropList字段。要做到这一点,您需要创建一个新的POCO类来表示您需要提取的数据。然后,您将使用数据属性将索引字段映射到您要定义的属性。像这样的东西例如:
最后在最后一行,您将调用query.GetResults()。此方法返回一个具有名为Hits的属性的对象。这表示找到的与您的搜索请求匹配的数据。
sitecore开发入门Sitecore的CRUD操作 - 第二部分的更多相关文章
- sitecore开发入门Sitecore的CRUD操作 - 第一部分
在本文中,讨论如何使用Sitecore.Data.Items.Item并对这些项执行CRUD(创建,读取,更新和删除)操作.我还将介绍如何使用Glass和Fortis类库进行相同的操作,这些操作都是对 ...
- Asp.Net Web API 2(CRUD操作)第二课
Asp.Net Web API 2(CRUD操作)第二课 Asp.Net Web API 导航 Asp.Net Web API第一课:入门http://www.cnblogs.com/aehyok ...
- sitecore开发入门之Sitecore字典结构最佳实践
使用Sitecore时,一个重要的主题是如何为您的网站处理不同的语言和区域.Sitecore对此的回答是使用字典项,它基本上只代表键/值定义.但是,这个字典项可以设置为具有不同的语言版本,这几乎允许您 ...
- elasticsearch入门(简单的crud操作)
记录一下,elasticsearch从创建索引到插入数据的一个crud操作. 一.创建索引 curl -XPUT "http://192.168.99.1:9200/productindex ...
- sitecore开发入门之如何在代码中获取SITECORE图像URL
using Sitecore; using Sitecore.Data.Items; using Sitecore.Resources.Media; public string GetUrl() { ...
- sitecore开发入门教程如何获取Sitecore项目的域名
我假设您在<sites>web.config文件的部分中设置了多个站点,并且每个站点都hostName定义了一个属性,例如 <site name="website1&quo ...
- 8天掌握EF的Code First开发系列之2 简单的CRUD操作
本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 创建控制台项目 根据.Net中的类来创建数据库 简单的CRUD操作 数据库模式更改介绍 本章小结 本人的实验环境 ...
- 【转载】salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL) salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的.salesfo ...
- SpringData JPA快速入门和基本的CRUD操作以及Specifications条件查询
SpringData JPA概述: SpringData JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问和操作 ...
随机推荐
- php替换字符串函数strtr()和str_repalce()区别
php中替换函数主要有strtr(),str_repalce()这两个函数,但你们都知道他们这两个函数的区别和用法吗? 先来看看这个php字符串替换函数 strtr()的两种用法: strtr(str ...
- vue_过滤器: 对要显示的数据进行特定格式化后再显示
过滤器 对要显示的数据进行特定格式化后再显示 并未改变原本的数据,可是产生新的对应的数据 <!DOCTYPE html> <html lang="en"> ...
- [LeetCode] Number of Lines To Write String 写字符串需要的行数
We are to write the letters of a given string S, from left to right into lines. Each line has maximu ...
- Docker 安装以及运用
Docker 运行在 CentOS 7 上,要求系统为64位.系统内核版本为 3.10 以上.Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位.系统内核版 ...
- 【LookLook文档】通过less 定制自己的Bootstrap 样式
闲话 学习还是看文档最快,看文档要仔细点,不可走马观花.感谢 “Bootstrap中文网” 思路 1.早在2015开始接触,由于公司中使用的是easyui 固一直没完全使用Bootstrap,开始接触 ...
- vins-mono:雅可比矩阵的推导
imu残差公式 我们计算雅可比采用加扰动形式 以下是位置增量偏差对旋转qbk的雅可比推导 对应的雅可比矩阵的代码 jacobian_pose_i.block<, >(O_P, O_R) = ...
- centos安装make
CentOS 中无法使用make,make install 命令 提示错误:make: command not found make是gcc的编译器,一定要安装 1.安装: yum -y instal ...
- Python全栈-magedu-2018-笔记8
第四章 - IPython 使用 帮助 ? Ipython的概述和简介 help(name) 查询指定名称的帮助,是python帮助 obj? 列出obj对象的详细信息 obj?? 列出更加详细的信息 ...
- Windows 10 编译 OpenJDK11
下载openjdk11源码 hg clone https://hg.openjdk.java.net/jdk-updates/jdk11u-dev/
- OO第二次博客作业--第二单元总结
第一次作业 1. 设计策略 第一次作业,一共三个线程,主线程.输入线程和电梯线程,有一个共享对象--调度器(队列). 调度的策略大多集中到了电梯里,调度器反而只剩下一个队列. 2. 基于度量的分析 类 ...