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