设为首页 收藏本站
查看: 987|回复: 0

[经验分享] SharePoint 2010之LINQ与SPMetal

[复制链接]
累计签到:8 天
连续签到:1 天
发表于 2015-9-26 07:41:43 | 显示全部楼层 |阅读模式
介绍
  在本文中,我们将介绍以下高级开发领域中的内容:
·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 c in 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. 添加如下的自定义栏和数据:
DSC0000.jpg

生成实体模型
  现在,我们就可以为以上列表生成实体模型。使用这个文件夹下的 SPMetal.exe来生成模型类:
  C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN
打开命令行,进到该文件夹:
DSC0001.jpg
  运行如下命令:



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

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

创建应用程序
  新建一个SharePoint > 2010 > 控制台应用程序 (目标框架 .NET 3.5 framework) 并将 SiteEntities.cs 文件添加到该项目。
DSC0002.jpg
  添加如下程序集引用:
DSC0003.jpg
  我们可以尝试以下操作: 通过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。
运行该应用程序,我们可以看到如下的结果。
DSC0004.jpg

插入项
  如果要在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 列表,可以看到如下结果:
DSC0005.jpg

更新项
  如果要更新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 上看到更新后的实体:
DSC0006.jpg

删除项
  如果要删除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 中的该项已被删除:
DSC0007.jpg
  以上就是如何通过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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-118851-1-1.html 上篇帖子: c#,sharepoint,2007,moss,spsitedataquery,跨列表查询,跨网站查询,join,联合查询 下篇帖子: SharePoint 胡言乱语
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表