SN如何处理内容版本控制

时间:2017-07-19 14:35:24

标签: sensenet

我正在尝试知道SN在其数据库中为特定容器(如文件夹)保存版本控制模式的位置!

我在[Versions]表中找到了[Status]列,但我注意到它的值仍为1,即使我将模式从major更改为none,反之亦然。

我还通过SQL事件探查器跟踪它,发现以下存储过程。触发:proc_Version_Update。

请详细说明。 谢谢!

1 个答案:

答案 0 :(得分:1)

如果您需要数据库解决方案(不推荐使用此解决方案,请尽可能使用REST或C#api),您可以查看内置数据库视图。他们会为你节省一些连接: - )。

容器上的版本控制模式是一个常规字段,称为可继承版本控制模式。请注意,此值确定该容器中子元素的版本控制行为,而不是容器自己的版本控制模式。如果您需要在各个内容项(如文档)上设置值,请查找 VersioningMode 属性。

您要查找的值与任何其他简单属性一样存储在 FlatProperties 表中,但使用下面的视图更容易查询。

查找列

请执行以下脚本以在FlatProperties表中找到正确的列:

SELECT [Id], [Page], [Column]
FROM [dbo].[PropertyInfoView]
where Name = 'InheritableVersioningMode'

最后一列将包含您需要的列名称(例如 int_3 )。另请注意 Page 值:有时系统中有太多字段,而且版本在FlatProperties表中占用多行

查找属性值

使用您要查找的容器路径执行第二个脚本(请将最后选择的列更改为您在数据库中找到的列

):

SELECT [NodeId], [Name], [Path], [VersionId], [int_3]
FROM [dbo].[SysSearchWithFlatsView]
where Path = @yourPath

最后一列值将是您要查找的枚举值(数字),以下之一:

Inherited = 0
None = 1
MajorOnly = 2
MajorAndMinor = 3