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