Starcounter - 更改属性的数据类型

1 c# starcounter

如果相应的表具有现有数据,我们如何安全地更改数据库类datatype的属性Starcounter

现有: int PostalCode

期望: string PostalCode

k_r*_*rus 6

更改数据库类的属性意味着重构数据库模式,即更改相应列的类型.无法无缝支持此类更改,Starcounter不提供内置工具.它可以手动完成,但非常麻烦.

我看到两种方法:

  1. 使用stardump工具卸载数据库,并使用SQLite等外部工具修改架构和数据.
  2. 通过更改应用程序架构的几个步骤,首先将数据从int列移动到string列中,然后将列重命名为原始列.

请记住始终备份数据库.

我将更详细地描述第二种方法.

第一步:将数据从int移动到字符串

  1. string类型的新属性添加到数据库类,例如,PostalCodeString
  2. 添加并执行应用程序代码,该代码将遍历该类的所有实例并设置PostalCodeString为从原始转换的值int PostalCode
  3. 停止应用程序并执行SQL语句以删除列: ALTER TABLE TheClassName DROP COLUMN PostalCode
  4. PostalCode从类定义中删除旧属性并删除转换代码.
  5. 启动应用程序并测试它是否按预期工作

第二步:重命名列

  1. 使用旧列名添加新属性,即PostalCode类型string
  2. PostalCodeStringPostalCode与步骤I类似的方式移动数据,即通过应用程序代码遍历类的所有实例.
  3. 删除列 PostalCodeString

我自己没有测试过这些步骤,但我希望它能够正常工作.主要关注的是PostalCode在第二步中创建.

编辑:自2017年12月18日起,最新版本的候选人仅完全支持drop column SQL语句.