值类型的对象在SQLITE中会报错 返回

SqlSugar 沟通中
3 108
该叫什么 No1.SUP 发布于1周前
悬赏:0 飞吻

如果某个实体中有一个值对象的字段Status,值对象里Status字段是bool类型的,该实体作为1对1的导航插入会报错


报错内容:Object of type 'System.Int64' cannot be converted to type 'System.Boolean'.”

SqlSugar.dll!SqlSugar.DbBindAccessory.SetOwnsOne(object addItem x, bool isOwnsOne = true, SqlSugar.EntityInfo entityInfo = {SqlSugar.EntityInfo}, System.Data.IDataReader dataReader = {Microsoft.Data.Sqlite.SqliteDataReader}) 行 170

在 SqlSugar\DbBindAccessory.cs(170)


热忱回答3

  • 自己做了一个自定义转换解决了,不过还是希望官方调节一下.不过不知道是不是我自己的原因的话当我没说.

    
        public class ValueStatusConvert : ISugarDataConverter
        {
            public SugarParameter ParameterConverter<T>(object value, int i)
            {
                var name = "@myp" + i;
                // 写入数据库:将 bool 转为 int (0 或 1)
                int val = (bool)value ? 1 : 0;
                return new SugarParameter(name, val);
            }
            public T QueryConverter<T>(IDataRecord dr, int i)
            {
                var value = dr.GetValue(i);
                // 处理 SQLite 返回的 Int64 (long)
                if (value is long l)
                {
                    return (T)(object)(l == 1);
                }
                // 处理可能出现的 Int32
                if (value is int j)
                {
                    return (T)(object)(j == 1);
                }
                return (T)value;
            }
        }


    0 回复
  • 可以提供一个DEMO删 掉OBJ和BIN打包上传。

    0 回复
  • ObjectValueDemo.zip

    demo就会报错了 最新版的 .net10

    0 回复