【转】WSS3.0开发--你还在为写CAML痛苦吗?
进行WSS3或MOSS开发的朋友不可避免的要处理各种List的查询,编写类似下面的CAML语句:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
痛苦吧? 简单的还好,复杂一点的caml查询绝对会让你晕头转向。
现在网上的解决方案有几种:
1)CAMLBuilder:提供一个Window程序,可以动态生成CAML,然后开发人员可以粘贴进代码代码中。
http://blog.u2u.info/DottextWeb/patrick/archive/2005/05/29/3522.aspx
2)CAML.net : 提供了一个类库,可以如下的编写CAML:
http://www.codeplex.com/camldotnet
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
3)还有一位兄弟写了个支持用sql语句形式的caml类库,查询语句如下:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
上面的三种方案,个人还是比较喜欢CAML.net的实现,纯代码,但是它的语法不是那么的"优雅"。
以前写过一个数据库ORM工具,见(DBO),实现了如下的数据查询语法:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
于是,计划开发类似语法的CAML查询类库--CodeArt.SharePoint.CAMLQuery.dll。
07年六月份开始开发,已经用到了实际的项目中,实现了几个复杂的查询功能,好东西不敢独享,哈哈,给大家show一下。
(在后面大家可以找到dll的下载链接)
以下的代码示例针对一个列表CAMLList做查询,此列表有如下字段:标题,正文,修改时间。
首先,引用名称空间。
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
代码1:查询标题中包含"XXX"的 项目:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
代码2:查询标题中包含"XXX"或"YYY"的 项目:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
代码3:我们可以创建一个查询模型,类似一个实体类,针对这个类进行查询:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
代码4:按照逻辑动态拼接查询,以下示例查询标题中包含"XXX"或"YYY"的 项目,按照queryByTime 参数,附加修改时间条件:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
代码5:我们可以用类似sql的强类型语法:
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
![](/assets/blank.gif)
下载dll: https://www.codeplex.com/camlquery
最新版本的接口可能有变化,使用时请参考最新的文档。
附:
原来还有第五种方案: 用 .net3.5的朋友可以试试LINQtoSharePoint,跟o这个.net2.0的好像差不多:
http://www.codeplex.com/LINQtoSharePoint
转载于:https://www.cnblogs.com/NetUser/archive/2013/03/11/2954191.html
【转】WSS3.0开发--你还在为写CAML痛苦吗?相关推荐
- Struts 2创始人Patrick Lightbody看《精通Struts 2:Web 2.0开发实战 》
<精通Struts 2:Web 2.0开发实战 > Apache Struts是目前最成功开源项目之一.除了一些基础性项目如Linux.MySQL以及若干编程语言外,很少有开源框架能像St ...
- From 《visual C++ 6.0开发工具与调试》
From <visual C++ 6.0开发工具与调试> 1. 如何快速地规范代码缩进格式 选中所需要规范的代码,按shift+F8 2. 如何在Rel ...
- 这就是华为速度:2.69分钟完成BERT训练!新发CANN 5.0加持,还公开了背后技术
金磊 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 快,着实有点快. 现在,经典模型BERT只需2.69分钟.ResNet只需16秒. 啪的一下,就能完成训练! 这是华为全联接2021上 ...
- Windows Embedded CE 6.0开发初体验(二)CE开发环境 收藏
上一篇<Windows Embedded CE 6.0开发初体验>之"嵌入式开发流程": http://blog.csdn.net/aawolf/archive/200 ...
- WSS2.0升级到WSS3.0
WSS2.0升级到WSS3.0的过程: 1.检查服务器上面是否安装.Net Framework3.0(必须要安装的). 2.安装WSS3.0(安装后别做配置) 选择第一项(逐步升级),默认的是第二项( ...
- 图解TC++3.0开发教程
第一章 开发环境 在Win7下安装tcpp3 老一些的程序员也许都用过DOS下经典的Turbo C 2.0.现在还记得大学时期到中关村盗版光盘贩子处买Turbo C 2.0光盘的情形.下面将安装tcp ...
- qt5.9.0调试如何查看变量的值_从0开发3D引擎(四):搭建测试环境
大家好,本文介绍了3D引擎的测试方法,搭建了本地的测试环境. 上一篇博文 wonder-yyc:从0开发3D引擎(三):搭建开发环境zhuanlan.zhihu.com 下一篇博文 wonder-y ...
- CodeArt WSS3.0(MOSS)字段编辑权限控制解决方案(v1.0)
Windows SharePint Service 3.0(或MOSS)默认不支持字段级的权限.而在项目的实施过程中,客户经常会提出这个需求. 解决方案有两种: 1)开发自定义的字段,在字段上附加控制 ...
- ASP.Net分页组件1.0开发下载了...
ASP.Net分页组件1.0开发下载了...支持皮肤和自定义样式.热乎乎的,写的不好的地方指正出来啊... 开源免费的.希望大家多多支持... ASP.Net分页组件1.0开发下载了...支持皮肤和自 ...
最新文章
- 关于mysql的error-based injection payload
- HDU4405(概率DP求期望)
- Python标准模块--logging
- 基于I2C总线的MPU6050学习笔记
- PhantomJS命令行选项
- 12306加密传输_前沿一键发送“文图音视频” 支持加密传输、图形密码、保护用户隐私……5G消息要来了!...
- 机器人环境感知算法之经典阶段
- Java集合与数组实现升序排序的算法设计
- 蓝桥杯C语言基础题---01字串
- java 详情页_电商网站详情页系统架构
- A*求解带时间窗的路径规划问题
- Astah Professional for Mac(UML建模工具)
- java obj_java中的 compareTo(Object obj)的obj怎么理解
- 梦想家CMS内容管理系统(毕业设计)
- delphi下使用indy进件socket通信的简单实例介绍
- SuperView和View的区别
- 展望未来综合型人工智能教育应用
- 日记01 2021年5月
- 为什么mos管反相器要用pmos管和nmos管构成
- bugku 游戏过关
热门文章
- js获取video的时长_HTML5标签之lt;videogt;二次开发(一) — 为什么(后跟重要知识点!)...
- tcp序列号为什么是随机的_每个开发人员都应该掌握的TCP知识
- bs架构 mysql_基于BS架构OA办公系统的设计(PHP,MySQL)(三人组)(含录像)
- 神策数据入选“2021CCFA 零售行业技术新锐企业榜单”
- 特别的彩蛋给特别的你,新版官网上线啦!
- Asp中解决AJAX乱码问题
- 构造方法、类的初始化块以及类字段的初始化顺序
- PPT幻灯片从自动翻页设置为手动翻页技巧图文教程
- 7月13日微软MVP社区夏日巡讲北京站活动现场图集
- 网络学习(二十七)Windows XP 加入 Windows Server 2003 Active Directory