【问题标题】:Linq to SharePoint broken after converting columns to content types将列转换为内容类型后,Linq to SharePoint 中断
【发布时间】:2014-11-13 12:53:47
【问题描述】:

我们正在开发一个使用 Linq to SharePoint 的项目。该列表有几列。使用 SPMetal 制作类后,将其导入 VS 以访问数据上下文。 Linq 查询运行良好。

我们采取了不同的方向,删除列表列并使用带有站点列的内容类型。 OOTB,添加/编辑表单工作正常。但是在使用 SPMetal 更新类并将类导入 VS 以获取数据上下文后,所有 Linq 查询都显示为错误。 Visual Studio 无法再识别这些列,因为它们似乎不在更新类的数据上下文中。列现在位于内容类型中,而不是列表中。

有没有办法使用 SPMetal 将内容类型的列导出到类文件中?是否有另一个库要导入以​​将 Linq 写入具有内容类型的列表的 SharePoint 查询?如何编写使用内容类型列的 Linq 查询?

【问题讨论】:

    标签: linq sharepoint sharepoint-2010 sharepoint-2007 sharepoint-2013


    【解决方案1】:

    假设您有一个名为 Documents 的列表。它有两列,分别称为“一”和“二”。您可以很好地进行 Linq to SP 查询:

    DataContext dc = new DataContext("http://sharepoint");
    var varResults = (from item in dc.Documents
                      where item.Two == "blah"
                      orderby item.One descending
                      select item);
    

    然后您决定要对网站栏使用内容类型。当您从列表中删除列“一”和“二”时,上述查询会中断。您制作网站栏并将它们分配给称为“主”的内容类型,父项是项目。 Master 有两种派生自它的内容类型,称为“CloneA”和“CloneB”。由于克隆内容类型的父级是 Master,因此它们会自动获取它的站点列。当您将内容类型分配给列表时,定义如下所示:

    Column - Content types
    Title - Documents, Master, CloneA, CloneB
    One - Master, CloneA, CloneB
    Two - Master, CloneA, CloneB
    

    克隆内容类型稍后将用于不同的信息策略以保留在文档列表中。在打破继承并对内容类型设置保留策略后,现在项目可以单独设置为将导致保留(1 天 - CloneA,1 周 - CloneB)开始的内容类型。

    但是 linq to SP 查询仍然中断。即使显示了站点列,SPMetal 也出于某种原因仅捕获基本内容类型。因此,对于 linq,上述查询中的列并不真正存在。输入“哪里的项目”。 “二”甚至没有出现。您必须对其进行强制转换才能使其工作(可能没有正确解释)。所以这是工作代码:

    DataContext dc = new DataContext("http://sharepoint");
    var varResults = (from item in dc.Documents.OfType<Master>()
                      where item.Two == "blah"
                      orderby item.One descending
                      select item);
    

    你可能很想使用

    var varResults = (from item in dc.Documents.OfType<DocumentsMaster>()
    

    不幸的是,这只会返回与列表中该内容类型关联的项目。因此,如果您想过滤特定内容类型的项目,请自行淘汰。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多