如果相应的表有现有数据,我们如何安全地更改数据库类datatype
的属性?Starcounter
例子
现存的:int PostalCode
想要的: string PostalCode
如果相应的表有现有数据,我们如何安全地更改数据库类datatype
的属性?Starcounter
例子
现存的:int PostalCode
想要的: string PostalCode
更改数据库类的属性意味着重构数据库模式,即更改相应列的类型。此类更改不受无缝支持,并且 Starcounter 不提供内置工具。可以手动完成,但是比较麻烦。
我看到两种方法:
int
列移动到string
列,然后将列重命名为原始列。请记住始终备份您的数据库。
我更详细地描述了第二种方法。
string
向数据库类添加新的类型属性,例如,PostalCodeString
PostalCodeString
为原始转换的值int
PostalCode
ALTER TABLE TheClassName DROP COLUMN PostalCode
PostalCode
并删除转换代码。PostalCode
类型string
PostalCodeString
to移动PostalCode
,即通过应用程序代码遍历类的所有实例。PostalCodeString
我自己没有测试过这些步骤,但我希望它能起作用。主要关注的是PostalCode
在第二步中创建。
编辑:自 2017 年 12 月 18 日以来,仅在最新的候选版本中完全支持 drop column SQL 语句。
如果 PostalCode 只是一个 int 那么这应该可以工作。
PostalCode.ToString();