SQLite 无法修改已生成的字段 返回
第一次创建表及字段,以下可以成功
[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)
-
fate stay night VIP0
2021/8/26因为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 回复 -
fate stay night VIP0
2021/8/26所以还是手动改吧,ORM不适合做这些操作
0 回复 -
yy VIP0
2021/8/26@fate stay night:明白了,那我再想想其他方法。
0 回复 -
yy VIP0
2021/8/26@fate stay night: 如果需要修改还是只能改名、insert select drop 一顿操作了。
0 回复