Ulid转换失败, Invalid cast from 'System.String' to 'NUlid.Ulid'. 返回

SqlSugar 沟通中
2 323

版本号: 5.1.4.205


主键id是Ulid类型,查询id 转换失败:Invalid cast from 'System.String' to 'NUlid.Ulid'.

,但是我直接查询出string类型, 再手动转成Ulid是可以的,sql如下:

var id = await _db.Queryable<实体类>().Select(x => x.Id).FirstAsync();


找了文档,配置了下面的转换也不行,

public class UlidToStringConverter : ISugarDataConverter

{

    public SugarParameter ParameterConverter<T>(object columnValue, int columnIndex)

    {

        var name = "@Ulid" + columnIndex;

        if (columnValue == null) return new SugarParameter(name, null);

        return new SugarParameter(name, columnValue.ToString());

    }


    public T? QueryConverter<T>(IDataRecord dataRecord, int dataRecordIndex)

    {

        var str = dataRecord.GetValue(dataRecordIndex).ToString();

        if (string.IsNullOrEmpty(str)) return default(T);

        var ulid = Ulid.Parse(str);

        if (ulid is T result) return result;

        throw new NotImplementedException();

    }

}


热忱回答2

  • fate sta fate sta VIP0
    2026/2/25

        public T? QueryConverter<T>(IDataRecord dataRecord, int dataRecordIndex)


    重写的 这个方法打断点去调试。

    0 回复
  • fate sta fate sta VIP0
    2026/2/25

    逻辑全部在你这儿。只要你写的对就OK

    0 回复