我们目前有一个ID错误的字段。 Sharepoint字段的ID和内部名称仅在域模型上是只读的。我想知道是否有办法甚至通过使用内容数据库来更新它们。
一种可靠的方法是删除该字段并重新创建它。但它已有数据,有数千页。我想知道是否有办法更新ID和内部名称而不进行字段的删除和重新创建。
由于
答案 0 :(得分:2)
即使可行,也不要这样做 它是:
使用某些脚本重新创建字段以保持数据更安全。
答案 1 :(得分:0)
我们遇到了同样的问题。与数据库混淆不是我们的选择(,不应该为你),但你可以解决它。不幸的是,它需要触摸每个页面来更新元数据。
首先,创建列应该在列表中的列。然后,您可以通过多种方式将旧列中的数据复制到新列:
老实说,编写一个小型控制台应用程序将是最快的。例如:
string siteUrl = "http://server/sitecollection/";
string webUrl = "subsite1/subsite2/";
string listName = "Your List Name";
using (SPSite site = new SPSite(siteUrl))
{
using (SPWeb web = site.OpenWeb(webUrl))
{
SPList list = web.Lists[listName];
foreach (SPListItem item in list.Items)
{
item["New_x0020_Column_x0020_Name"] = item["Old_x0020_Column_x0020_Name"];
}
}
}
此外,它强烈建议首先在DEV环境中尝试此操作。只需从生产环境中进行STSADM还原并测试您的控制台应用程序。然后,验证您的数据并删除旧列!
答案 2 :(得分:0)
我不建议修改内容数据库,因为它是:
您可以尝试做什么 - 查看内部名称属性是否实际上是“只读”还是定义为“朋友”,并且您无法从其他代码程序集中调用它。如果是后一种情况,您可以使用.Net反射来设置属性值。有关详细信息,请参阅此MSDN documentation link。