code first模式下,同步表结构 返回

SqlSugar 老数据
2 424

问题一:实体中,又添加了新的字段,但是实体对应的sql server数据库中的表里面有大量的数据,怎么在不删除数据的情况下,更新表结构。【db.CodeFirst.InitTables(types)】这个是在我数据表中没有数据的时候会更新,有数据就报错,然后我每次表结构更新的时候,要去备份一下原表的数据,删掉数据再去生成表结构?

问题二:

于是我想着要是能生成数据库脚本也行。可以复制脚本去数据库执行一下

然后我测试了【var diffString= db.CodeFirst.GetDifferenceTables(types).ToDiffString()】,只是生成差异信息,并不能根据差异生成sql脚本,



所以我不明白sql sugar是怎么实现数据迁移的,哪位大佬可以给讲一下

热忱回答2

  • fate sta fate sta VIP0
    2023/5/25

    用来验证是否有删除操作,有删除操作就需要手动处理一下

    var diffString= db.CodeFirst.GetDifferenceTables(types).ToDiffString()


    如果没有删除操作就直接更新就行了

    db.CodeFirst.InitTables(types) 

     

    0 回复
  • 我又来了,问了fate stay night大佬解决了,知道了原因所在,当表中有数据,只要是新添加的列当要不手动标记【IsNullable = true】,要不就是通过aop扩展添加的列自动IsNullable = true,然后一切顺利。

    0 回复