无实体插入和更新PG,当数据为json或者NULL时,出错 返回

SqlSugar 沟通中
5 267
该叫什么 翔翔 发布于2025/1/15
悬赏:0 飞吻

使用db.Insertable(dc).AS("student").ExecuteCommand()时,

无实体插入和更新sqlserver正常,但使用PG时,存在问题


(1)当某个属性值为NULL时,出错


错误内容:字段 "XXX" 的类型为 bigint, 但表达式的类型为 text

(2)当某个属性类型为json, 出错


错误内容:字段 "XXX" 的类型为 json, 但表达式的类型为 text




热忱回答5

  • fate sta fate sta VIP0
    2025/1/15

    看文档:动态建类, 要用这种方式

    0 回复
  • 翔翔 翔翔 VIP0
    2025/1/15

    @fate sta:有没可能提供一个扩展接口或者参数,让我传个类型进去

    0 回复
  • 翔翔 翔翔 VIP0
    2025/1/15

    毕竟无实体更新和插入是支持的,希望能够完全走通

    0 回复
  • 翔翔 翔翔 VIP0
    2025/1/17

    我暂时fork出来源代码,做了最小的修改:

    1.修改InsertableProvider<T>

    方法Init()

    方法SetInsertItemByDic(int i, T item, List<DbColumnInfo> insertItem)


    1.修改UpdateableProvider

    方法Init()

    方法SetUpdateItemByDic2(int i, T item, List<DbColumnInfo> updateItem)


    调用时,仍然使用IInsertable<T> Insertable<T>(List<T> insertObjs) 

    T使用Dictionary<SugarColumn, object>来替代Dictionary<string, object>


    sqlsugar仍然是Java、.NET世界使用无实体支持低代码最好的工具,没有之一!


    0 回复
  • fate sta fate sta VIP0
    2025/1/17

    多库还是建议动态建类方式,这种几乎可以用AOP等几乎所有类的功能

    0 回复