我想在每晚从SQL Server DB更新的站点上有一个Sharepoint列表,最好使用C#。这是捕获,我不知道是否删除,添加了任何记录,或者是否已更新任何记录中的任何字段。我相信那么最简单的事情就是从列表中删除数据,然后用新的列表数据替换它。但有没有简单的方法呢?我不想从列表中逐行删除3000多项,然后一次添加一条3000+条记录。
答案 0 :(得分:1)
它取决于您的环境。如果你在夜间对系统负载不是很大,我宁愿选择以下方法之一:
1)构建一个timerjob,删除列表(不是逐个项目,导致这很慢),重新创建列表并从db导入项目。当我们谈论3.000 - 5.000元素时,这并不是那么多,我认为在10分钟内完成。
2)使用项目循环遍历sharepoint列表,如果已在db中更新,则逐字段检查,如果是,则更新它。
我更愿意删除列表并导入完整的表格,因为我们所说的不是那么多数据。
另一种方法,一个好主意,是使用BCS或BDC。然后,您将始终保持数据并与数据库同步。看看
https://msdn.microsoft.com/en-us/library/office/jj163782.aspx
https://msdn.microsoft.com/de-de/library/ee231515(v=vs.110).aspx
答案 1 :(得分:0)
不幸的是,没有" easy"和/或删除列表中所有项的优雅方式,如SQL中的delete语句。如果可以从列表定义轻松创建列表,或者如果您关心的是性能,则可以删除整个列表并重新创建列表,因为SP 2007 SPWeb类具有名为ProcessBatchData的方法。您可以使用它来批处理命令,以避免向服务器发出6000个单独命令的性能损失。但是,它仍然要求您传递一个丑陋的XML,其中包含要删除或添加的所有项目的列表。
答案 2 :(得分:0)
理想的方法是枚举数据库中的所有行,并使用主字段值查看SharePoint列表中是否已存在每一行。如果它已经存在,只需更新它们[1]。否则,您可以添加新项目。
[1] - 可选地,在更新它们时,我们可以将列表项字段值与数据库列值进行比较。仅当任何字段发生更改时,请更新它。否则跳过它。