当前位置:  开发笔记 > Android > 正文

Sharepoint:更新内容类型时,基于内容类型的列表会发生什么?

如何解决《Sharepoint:更新内容类型时,基于内容类型的列表会发生什么?》经验,为你挑选了1个好方法。

我有一个假设的问题(至少现在:))

假设我根据一些自定义内容类型创建列表.我在该列表中添加了大约1000个项目(在生产中).然后客户来了,他说他需要修改自定义内容类型.

如果我修改自定义内容类型,列表会发生什么?它会自动更新(我怀疑)?那已经创建的列表项呢?

你们有没有这方面的经验?



1> Anders Rask..:

所以关于内容类型的几个问题:

首先,内容类型有两种形式:网站内容类型和列表内容类型.网站内容类型是驻留在图库中的"模板".在列表中使用站点内容类型时,内容类型将实例化为给定列表上的列表内容类型.

其次,您可以通过多种方式创建和修改您的内容类型,这将决定数据在数据库中的三种模式.

如果您使用GUI创建了内容类型,或者使用API​​创建了自定义代码,则您的站点内容类型和列表内容类型都在数据库中处于"仅数据库"状态.这意味着它正在数据库中查找内容类型的定义.

如果您已将内容类型创建为CAML中的功能,则您的站点内容类型将在数据库中进行幻像(或未定制,因为我们应该在v3中调用它).这基本上意味着数据库在12-hive中的特征XML中查找构成内容类型的站点列.这应该意味着您可以更新该功能,并且您可以在更新内容类型中使用新的站点列,对吧?

不幸的是不记得:还记得我们还有列表内容类型吗?这里的无聊是这些列表内容类型是使用代码实例化的,因此它们处于"仅数据库"状态.这意味着您的更改只会在您的网站内容类型中看到,而不会在使用该内容类型的现有列表中看到!

有几种方法可以解决此问题,解决方案取决于您的需求以及您正在进行的更改(删除字段,添加字段,更改字段).

例如,您通常希望保留现有的项目元数据,即使内容类型随时间而变化.如果通过代码推送列表内容类型中的更改,则会丢失存储在已更改/已删除字段中的数据.对此的解决方案是添加基于旧内容类型但具有更改字段的全新内容类型.您可以添加新内容类型(通过代码或使用功能XML)并使用功能接收器或类似功能将新内容类型推广到使用旧内容类型的所有列表,然后将旧内容类型标记为隐藏.这样就可以保留旧的元数据,但不能使用新的元数据以外的方式添加新项目.

如果您可以直接访问生产环境,并且您的客户治理计划允许,那么在此问题的其他答案中提到的方法将是首选方法.与SharePoint中的其他工件一样,建议以结构化方式部署内容类型.以非结构化方式添加新内容类型会影响搜索相关性(托管属性),也可能影响站点的常规分类(站点列不被重用等),因此即使可以直接在生产现场,我不会推荐它!

这导致我最后的方法是我推荐的方法,至少对于未来的内容类型:使用功能接收器从头开始以编程方式创建内容类型!这样,您始终可以了解内容类型的真实状态(仅限数据库),并且您可以采用结构化方法来管理未来的更改!你可以通过谷歌搜索"创建"内容类型"以编程方式SharePoint"找到几种方法来做到这一点

为了完整性:我提到了三种模式.您的内容类型可以使用的最后一种模式是"UnGhosted".这意味着您的内容类型是使用功能XML创建的,但它已与12个配置单元中的原始XML源断开连接.

我的朋友SørenNielsen在审核您的内容类型层次结构时对内容类型有一些好处.上面描述的一些问题可以在MSDN文章更新内容类型中简要提及.Gary Lapointe还有一个STSADM扩展,解决了内容类型的一些问题,请参阅传播内容类型更改.

对于咆哮很抱歉,但主题很复杂,需要彻底解释以避免任何误解.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有