SchemaPropertyTypes 中的映射字段用途 table

Mapping field purpose in SchemaPropertyTypes table

我正在尝试 Sense/Net 社区版功能。

我成功定义并安装了名为 "Vacation Request" 的内容类型。

我想知道 table 中 "mapping" 字段的用途是什么:SchemaPropertyTypes

非常感谢,

我真的,真的希望你问这个只是出于好奇,而不是因为你想在数据库中手动更改某些东西——因为不推荐这样做:)。请始终通过 API 访问内容存储库,不要直接查询或修改数据库。

属性 类型和值

简单 属性 值(如 intshort text 值)存储在 FlatProperties 中 table。这是一个 fixed-with table,包含专用于不同类型的预定义数量的列(例如,x 个字符串列,y 个 int 列 - 请参阅 table 中的列名)。

正如您所发现的,

属性 定义存储在 Schema属性Types table 中。

Schema属性Types table中的zero-basedMapping字段定义了column index 在特定 属性 的 FlatProperties table 中。例如。具有映射 6 的字符串 属性 的值将存储在 FlatProperties table 的 'nvarchar_7' 列中(注意索引移动一位,因为列名索引是 one-based).

如果您看一下 属性InfoView 视图(不是 table),它可能有助于澄清这一点:视图的最后一列是一个计算列,显示您可以在平面属性 table.

中查找的列名

(还有其他有用的 SQL 视图以更易读的方式显示数据)

属性 'overflow'

可以注册比 FlatProperties 中的一行所能容纳的更多的相同类型的属性(例如 int)table。解决方案:Sense/Net 将这些节点存储在多行中 - 这就是那里有一个 Page 列的原因。 虽然 MS SQL Server 支持海量列已经有一段时间了,但出于兼容性原因,这种设计一直保留着。

这就是为什么您在 属性InfoView 中看到映射值,如 249,列名 nvarchar_10:该值存储在第 3 页,这意味着内容在 FlatProperties 中占用 3 条记录 table.

'Other' 属性 类型

您可能已经注意到,在引用或长文本属性的情况下,没有映射。这是因为我们没有将它们存储在 FlatProperties table 中,它们有自己的 table,例如 ReferencePropertiesTextPropertiesNText.