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应用框架,可使开发者用极简的代码即可实现对数据库的访问和操作 ...
随机推荐
- Faster数据库研习,一
什么是Faster Faster 是一个很屌的嵌入式KeyValue 数据库项目 我简单的把 微软官网怎么吹的给大家翻译一下: Faster:一个为状态管理而生的嵌入式并发KeyValue ...
- Hadoop Java API 操作 hdfs--1
Hadoop文件系统是一个抽象的概念,hdfs仅仅是Hadoop文件系统的其中之一. 就hdfs而言,访问该文件系统有两种方式:(1)利用hdfs自带的命令行方式,此方法类似linux下面的shell ...
- maven与eclipse集成
https://www.cnblogs.com/teach/p/5906425.html
- 解决sql_mode=only_full_group_by的问题
1.mysql查询报错: ORDER BY clause is not in GROUP BY..this is incompatible with sql_mode=only_full_group_ ...
- nginx Provisional headers are shown
项目用的Nginx做的代理,重启电脑后,重启项目和Nginx 浏览器报 Provisional headers are shown 解决: host文件添加: 127.0.0.1 cleaner ...
- 13、vue.js简单入门
本篇导航: 介绍与安装 vue常用指令 一.介绍与安装 vue是一套构建用户界面的JAVASCRIPT框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层, ...
- 【zc】 PHP中json_encode(编码) 与 json_decode(解码) 【aa】
一.json_encode() 对变量进行JSON编码, 语法: json_encode ( $value [, $options = 0 ] ) 注意:1.$value为要编码的值,且该函数只对UT ...
- Kali 2.0使用SSH进行远程登录
注:此文为转载他人博客,不用做商业用途,如有侵权,请联系我删除 一.配置SSH参数 修改sshd_config文件,命令为: vi /etc/ssh/sshd_config 将#PasswordAut ...
- 与前端(使用vue框架)对接的问题
1.跨域问题 跨域问题是: 浏览器的同源安全策略 没错,就是这家伙干的,浏览器只允许请求当前域的资源,而对其他域的资源表示不信任.那怎么才算跨域呢? 请求协议http,https的不同 域domain ...
- LeetCode 50 - Pow(x, n) - [快速幂]
实现 pow(x, n) ,即计算 x 的 n 次幂函数. 示例 1: 输入: 2.00000, 10输出: 1024.00000 示例 2: 输入: 2.10000, 3输出: 9.26100 示例 ...