SQLite 无法修改已生成的字段 返回

SqlSugar 老数据
4 1919
该叫什么 yy 发布于2021/8/26
悬赏:5 飞吻


第一次创建表及字段,以下可以成功

[SugarColumn(IsNullable = true)]

public string TestData { get; set; }

SQLite生成了字段,类型为varchar(200)


第二次运行前,修改字段类型

[SugarColumn(IsNullable = true, ColumnDataType = "Text")]

public string TestData { get; set; }


运行后,SQLite中的字段类型仍然为varchar(200)

新增Text类型的字段没问题。


程序每次运行都执行了以下代码,并且测试添加新字段是没问题,修改则不行。

db.CodeFirst.SetStringDefaultLength(200).InitTables(types);


另外,当我给属性增加DefaultValue时,都不会创建新字段了。类似的还有OldColumnName、Length属性,其他未完全测试。



运行环境:

Winform 

.NET Framework4.5.2 

SQLSugar版本:5.0.3 - 5.0.3.2


热忱回答4

  • 因为SQLite不能完全支持SQL语句,只能增加字段,不能drop字段,所以,要修改某表的某字段数据类型,只能:

    ALTER TABLE TBAcct RENAME TO TBAcctOld;//先将表重命名 

    CREATE TABLE TBAcct(ID INTEGER PRIMARY KEY AUTOINCREMENT, Name VARCHAR(50)); //重新创建表

    INSERT INTO TBAcct (ID,Name) SELECT ID, CName FROM TBAcctOld; //将旧表的内容插入到新表中 

    DROP TABLE TBAcctOld; //删除旧表


    0 回复
  • 所以还是手动改吧,ORM不适合做这些操作

    0 回复
  • yy yy VIP0
    2021/8/26

    @fate stay night:明白了,那我再想想其他方法。

    0 回复
  • yy yy VIP0
    2021/8/26

    @fate stay night: 如果需要修改还是只能改名、insert select drop 一顿操作了。

    0 回复