【问题标题】:Change profile custom field type (Sitefinity 6.3)更改配置文件自定义字段类型(Sitefinity 6.3)
【发布时间】:2018-11-17 19:52:46
【问题描述】:

我安装了旧版 Sitefinity(6.3 版) 在个人资料上,我有一个数字自定义字段。我现在需要将其更改为保存字符串。

我发现没有简单的方法来更改数据类型 (https://www.progress.com/documentation/sitefinity-cms/edit-an-existing-custom-field),但是可以通过代码/配置来实现吗?

我猜一个选项是删除该字段,然后重新创建它是可能的,但是由于我有很多数据,因此要恢复该字段中的数据需要做很多工作。这是唯一的方法吗?

编辑:我已删除该列并将其重新创建为字符串/varchar。 我现在遇到了某种转换器的问题

type converter initialization failed. The converter with name 'DecimalConverter' does not convert from CLR type 'System. String' to SQL type 'DECIMAL'.
Parameter name: converterName
Actual value was OpenAccessRuntime.Data.DecimalConverter, Telerik.OpenAccess.Runtime, Version=2013.3.1211.3, Culture=neutral, PublicKeyToken=7ce17eeaf1d59342.

堆栈跟踪中的这一行很重要

[MetadataException: The metadata for field 'CustomerNo_sv' of class 'Telerik.Sitefinity.Security.Model.SitefinityProfile' cannot be initialized: Type converter initialization failed. The converter with name 'DecimalConverter' does not convert from CLR type 'System. String' to SQL type 'DECIMAL'.
Parameter name: converterName
Actual value was OpenAccessRuntime.Data.DecimalConverter, Telerik.OpenAccess.Runtime, Version=2013.3.1211.3, Culture=neutral, PublicKeyToken=7ce17eeaf1d59342.]

正如我所见,语言指定的值没有被转换。现在整个站点都关闭了,我无法访问后端。所以我想我必须在数据库中解决这个问题?

【问题讨论】:

    标签: sitefinity


    【解决方案1】:

    我在类似情况下的做法是这样的:

    我创建新字段,然后用旧列(字段)中的值填充数据库中的新列。

    在您的情况下,您将查看 sf_sitefinity_profile 表。

    这样数据就会迁移到新的字段中。

    之后,您可以删除旧字段并开始使用新字段。

    【讨论】:

    • 我看到的唯一问题是我必须在代码中更改属性名。如果我改为做一个临时表,复制值,删除字段,然后强制转换并重新填充,我可以使用相同的名称。更少的代码更改,更多的东西一次。编辑:我确实需要在代码中将数据类型从 int 更改为字符串,所以可能差异不大。
    • 然后除了上述步骤之外 - 删除旧字段后 - 使用旧字段的名称和正确的类型创建一个新字段并保存。然后再次对其进行数据迁移。所以工作流程将是:旧字段(int):高度新字段(字符串):HeightTemp将数据从Height复制到HeightTemp Delete Height Create Height(字符串)将数据从HeightTemp复制到Height Delete HeightTemp
    • 嗯,你是不是把旧的字段删了,一口气新建了一个?这将解释错误。您应该删除旧的,保存更改,然后创建一个新的(因为它们具有相同的名称)
    • 我确实保存然后恢复。该错误似乎与我错误地创建了本地化属性有关(_sv 到底是瑞典语)。我恢复了备份并创建了一个新字段(未本地化),将对该字段的所有调用更改为新名称,现在它可以工作了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2023-04-05
    • 2012-10-24
    • 2023-03-08
    相关资源
    最近更新 更多