📜  向所有文档添加自定义数据字段,无论文档类型如何,使用 CMS_Tree 数据库表的 NodeCustomData 列,或 CMS_Document 表的 DocumentCustomData 列 - Kentico 8 - C# (1)

📅  最后修改于: 2023-12-03 14:50:41.495000             🧑  作者: Mango

向所有文档添加自定义数据字段

在 Kentico 8 中,你可以向所有的文档添加自定义数据字段,而不需要担心文档类型。你可以使用 CMS_Tree 数据库表的 NodeCustomData 列,或 CMS_Document 表的 DocumentCustomData 列来实现这一功能。

NodeCustomData 列

NodeCustomData 列是一个 VARBINARY 类型的列,它可以存储文档的自定义数据。你可以使用以下代码向 NodeCustomData 列中添加自定义数据:

// 获取当前文档
var currentNode = DocumentContext.CurrentDocument;

// 创建自定义数据
var customData = new MyCustomData { Foo = "Bar" };

// 序列化自定义数据
var customDataBytes = ObjectSerializationHelper.Serialize(customData);

// 将自定义数据保存到 NodeCustomData 列中
currentNode.SetValue("NodeCustomData", customDataBytes);
currentNode.Update();
DocumentCustomData 列

DocumentCustomData 列是一个 NTEXT 类型的列,它可以存储文档的自定义数据。你可以使用以下代码向 DocumentCustomData 列中添加自定义数据:

// 获取当前文档
var currentDocument = DocumentContext.CurrentDocument;

// 创建自定义数据
var customData = new MyCustomData { Foo = "Bar" };

// 序列化自定义数据
var customDataXml = ObjectSerializationHelper.SerializeToXml(customData);

// 将自定义数据保存到 DocumentCustomData 列中
currentDocument.SetValue("DocumentCustomData", customDataXml);
currentDocument.Update();

以上代码演示了向当前文章添加自定义数据的方法,你也可以使用同样的方法将数据添加到其他文档中。注意,你需要创建一个包含自定义数据的对象,并将其序列化为字节数组或 XML 文本,然后将其保存在 NodeCustomData 列或 DocumentCustomData 列中。

在代码中使用 ObjectSerializationHelper 是一个方便的方法来序列化对象。如果你使用的是 CMS.Core 命名空间,你可以直接在代码中引用它。

结论

向所有文档添加自定义数据字段非常容易,只需要使用 CMS_Tree 数据库表的 NodeCustomData 列或 CMS_Document 表的 DocumentCustomData 列即可实现。使用 NodeCustomData 列时,你可以使用字节数组来保存自定义数据,而使用 DocumentCustomData 列时,你可以使用 XML 文本来保存自定义数据。无论你选择哪种方法,都可以轻松地为文档添加自定义数据字段。