Starcounter - 更改属性的数据类型

时间:2017-12-28 15:58:42

标签: c# starcounter

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

实施例

现有:int PostalCode

期望:string PostalCode

2 个答案:

答案 0 :(得分:6)

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

我看到两种方法:

  1. 使用stardump工具卸载数据库,并使用SQLite等外部工具修改架构和数据。
  2. 通过更改应用架构的几个步骤,首先将数据从int列移至string列,然后将列重命名为原始列。
  3. 请记住始终备份您的数据库。

    我更详细地描述了第二种方法。

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

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

      1. 使用旧列名添加新属性,即PostalCode类型的string
      2. 以与步骤I类似的方式将数据从PostalCodeString移至PostalCode,即通过应用程序代码遍历该类的所有实例。
      3. 删除列PostalCodeString
      4. 我自己还没有测试过这些步骤,但我希望它能够正常运行。主要关注的是在第二步中创建PostalCode

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

答案 1 :(得分:0)

如果PostalCode只是一个int,那么这应该可行。

PostalCode.ToString();