SharePoint 2010之LINQ与SPMetal

来源:互联网 发布:剑网3正太捏脸数据 编辑:程序博客网 时间:2024/03/29 14:17

介绍

在本文中,我们将介绍以下高级开发领域中的内容:
•LINQ to SharePoint
•SPMetal
LINQ to SharePoint 是SharePoint 2010的一项新特性。 LINQ 本身是 Language Integrated Query 的意思,它是 .NET的一个组成部分。 LINQ的设计目标是使用相同的类型化查询语法来支持不同类型的数据源。到目前为止,它可以支持Objects, Datasets, SQL, Entities, XML等。

为什么我们需要 LINQ?

从前我们针对 List 的编程都是使用相应的栏名来访问。有了LINQ 之后,我们就使用类型化的方式访问列表了。换句话说,使用类似访问数据库的方式去访问列表项。
就像下面这样:

?
var result = from cin Citizen where c.Name == “John” select c;

什么是SPMetal?

我们创建了一个包含自定义栏的自定义列表后,还需要创建一个实体模型(Entity Model)与之对应,这样才能用LINQ来访问它。 SPMetal.exe 就是一个帮助我们生成 Model 类的工具。尽管我们可以手工创建Model 类,但毕竟这属于枯燥单调的工作,并且很容易出错。 所以用SPMetal 才是生成model 类的王道。

活动

本文将包含以下活动:
1.    Manager 列表创建
2.    实体创建
3.    使用LINQ读取
4.    插入实体
5.    更新实体
6.    删除实体

开始 LINQ 和SPMetal 的体验之旅

作为实验对象,我们创建了一个自定义列表,名为Manager. 添加如下的自定义栏和数据:

生成实体模型

现在,我们就可以为以上列表生成实体模型。使用这个文件夹下的 SPMetal.exe来生成模型类:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN
打开命令行,进到该文件夹:

运行如下命令:

?
SPMetal.exe /web:http://你的站点 /code:SiteEntities.cs

 过一会儿我们就会生成出一个新文件。打开SiteEntities 文件,我们就可以看到其中包含的Manager 类。

创建应用程序

新建一个SharePoint > 2010 > 控制台应用程序 (目标框架 .NET 3.5 framework) 并将 SiteEntities.cs 文件添加到该项目。

添加如下程序集引用:

我们可以尝试以下操作: 通过LINQ to SharePoint读取,插入,更新,删除。

读取项

我们先试一下查询country 为USA 的managers :

复制代码
using (SiteEntitiesDataContext ctx = new SiteEntitiesDataContext("http://moss.contoso.com/sites/Lab01")){          var result = ctx.Manager.Where(m => m.国家 == 国家.USA);           foreach (Manager项目 manager in result)           {                Console.WriteLine(manager.名称);           }}
复制代码

注: 我们可以使用 LINQ 或 Lambda 表达式来进行查询。上面的例子中我们用的是Lambda。
运行该应用程序,我们可以看到如下的结果。

插入项

如果要在Manager 列表中插入数据,可以使用如下代码:

?
using (SiteEntitiesDataContext ctx = new SiteEntitiesDataContext("http://moss.contoso.com/sites/Lab01"))
{
         Manager项目 manager =new Manager项目();
         manager.名称 ="新的经理";
         manager.地址 ="新的地址";
         manager.国家 = 国家.China;
         ctx.Manager.InsertOnSubmit(manager);
         ctx.SubmitChanges();
}

 执行以上程序后,打开SharePoint 中的Manager 列表,可以看到如下结果:

更新项

如果要更新SharePoint 中的列表项,可以使用如下代码:

?
using (SiteEntitiesDataContext ctx = new SiteEntitiesDataContext("http://moss.contoso.com/sites/Lab01"))
 {
        Manager项目 manager = ctx.Manager.Where(m =>string.IsNullOrEmpty(m.标题)).FirstOrDefault();
         if(manager != null)
         {
               manager.标题 ="新的标题";
         }
          ctx.SubmitChanges();
}

 我们可以在SharePoint 上看到更新后的实体:

删除项

如果要删除SharePoint 中的列表项,可以使用如下代码:

?
using (SiteEntitiesDataContext ctx = new SiteEntitiesDataContext("http://moss.contoso.com/sites/Lab01"))
{
        Manager项目 manager = ctx.Manager.Where(m => m.标题.Length>3).FirstOrDefault();
        if(manager != null)
        {
             ctx.Manager.DeleteOnSubmit(manager);
         }
         ctx.SubmitChanges();
}

 我们可以看到在SharePoint 中的该项已被删除:

以上就是如何通过LINQ to SharePoint 实现增删改查。希望大家都可以掌握。

总结

本文中我们使用了 LINQ 和SPMetal 工具。这些都是在实际的编程场景中经常使用的工具。

参考资料

http://msdn.microsoft.com/en-us/library/ee535491.aspx
http://msdn.microsoft.com/en-us/library/ee538255.aspx
SharePoint 2010 – LINQ and SPMetal

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 知道家人被绑架北派传销怎么办 接手前同事的客人无回复怎么办 喝了酒第二天一直吐怎么办 孩子看的鬼片不敢睡觉害怕怎么办 宝宝满月了脸还有点黄怎么办 我情人天天说没时间出去该怎么办 两个月宝宝下体三角区肿了怎么办 夏养的龙猫家里有味怎么办 不小心踩到仓鼠吐血了怎么办 不小心踩到仓鼠的头怎么办 母仓鼠生完孩子特别暴躁怎么办 被仓鼠咬出血怎么办要不要打针 被小仓鼠咬出血了该怎么办 仓鼠咬破手指流血了该怎么办 小仓鼠的手被棉花丝绑住了怎么办 荷兰猪如果不小心撞流血了怎么办 帮同事刷杯子但把杯子弄坏了怎么办 贵宾犬喜欢张开嘴巴跟人玩怎么办 鼻烟放了几天感觉跟受潮一样怎么办 两个月宝宝鼻屎堵住鼻子怎么办 肉包着智齿怎么办洗燥电影完整版 大腿内侧突然长黑痣越来越大怎么办 肚脐发炎、不脱落怎么办_妈网百科 老公出轨找个按摩的还不离婚怎么办 别人拿错钥匙装修好了房子怎么办 撞车后对方全责却不赔钱怎么办 我的世界国服客户端都是英文怎么办 下载的3d模型没有材质怎么办 写字时习惯把本子放歪该怎么办 被蚊子咬后留下硬疙瘩怎么办 吃冰镇西瓜导致呼吸不顺怎么办 吃冰镇西瓜嚓气导致呼吸不顺怎么办 在pr里面找不到做字幕的怎么办 电脑主机电源坏了接口坏了怎么办 邻居捡到我手机不给这种情况怎么办 婆婆总在儿子面前说媳妇坏话怎么办 试管准备取卵雌激素低该怎么办 订了火车票了忘记带身份证怎么办 网上买火车票忘记带身份证了怎么办 网上买的火车票忘记带身份证怎么办 深圳东站不卖站台票要送客怎么办