我可以在自定义 table 上手动创建系统字段吗?

Can I manually create system fields on a custom table?

我目前正在开发一个使用多个自定义 table 的新 Kentico 9 站点。这些 table 中已有数据,并通过 API 在代码中加以利用。在 Kentico 中创建自定义 Tables 的人在创建期间取消选中了几个系统字段,因此只会创建 ItemGUID 字段:

现在自定义 Table 已经创建并正在使用,我是否可以创建或重新添加其他列(ItemCreatedBy、ItemCreatedWhen 等)到此 table?如果可以,如何实现?


注意:我目前的方法是使用我想要的字段创建一个新的自定义 table,然后将数据迁移到新的 table(我们确实有超过 30 个 tables 但我宁愿不必手动执行此操作)。

您有几个选择:

  • 使用您当前的方法(可能是最快的恕我直言)
  • 手动更新 tables 以包含系统字段(可以编写数据库部分的脚本)但您还需要更新 cms_class [中自定义 table 的定义 table 也没有那些新字段(几乎可以从另一个自定义 table 定义中复制)。
  • 使用现有自定义 table 创建新自定义 table 并添加这些字段。这样做的缺点是您不能使用已经在 cms_class table 中定义的自定义 table。
  • 创建一些 C# 方法来使用当前列和系统列实质上创建新的自定义 table。将是 "run-once" 代码块。

取决于你想花多少时间,我认为最后一个选项是可行的。