Closed idea-zone closed 1 year ago
var p = new SugarParameter("name",json字符串){ CustomDbType= NpgsqlDbType.Jsonb };
感谢大佬,已经成功解决上述问题。附上当前完成的 NpgsqlParameter2SugarParameterList 的完成版本,方便遇到相同问题的人可以快速解决使用 Ado 调用时,从 NpgsqlParameter 转 SugarParameter 的问题(没有完全列完全部的特殊类型,一般也不用了太多):
/// <summary>
/// NpgsqlParameter 转 SugarParameter 类型
/// </summary>
/// <param name="paras">Npgsql的参数类别</param>
/// <returns>SugarParameter的参数列表</returns>
private List<SugarParameter> NpgsqlParameter2SugarParameterList(NpgsqlParameter[] paras)
{
List<SugarParameter> sqlParas = new List<SugarParameter>();
if (paras == null || paras.Length == 0) return sqlParas;
foreach (var para in paras)
{
if (para.NpgsqlDbType.HasFlag(NpgsqlDbType.Array))
{ // 如果是包含数组
sqlParas.Add(new SugarParameter(para.ParameterName, para.Value)
{
CustomDbType = para.NpgsqlDbType,
IsArray = true,
});
}
else if (para.NpgsqlDbType == NpgsqlDbType.Jsonb // - [ ] bug320,2023-06-21,NpgsqlParameter 部分特殊类型 转 SugarParameter ,没有完全写完
|| para.NpgsqlDbType == NpgsqlDbType.Jsonb
|| para.NpgsqlDbType == NpgsqlDbType.Geography
|| para.NpgsqlDbType == NpgsqlDbType.Geometry
|| para.NpgsqlDbType == NpgsqlDbType.Money
|| para.NpgsqlDbType == NpgsqlDbType.Polygon
|| para.NpgsqlDbType == NpgsqlDbType.Box
|| para.NpgsqlDbType == NpgsqlDbType.Hstore
|| para.NpgsqlDbType == NpgsqlDbType.Inet
|| para.NpgsqlDbType == NpgsqlDbType.Xml
|| para.NpgsqlDbType == NpgsqlDbType.TsQuery
|| para.NpgsqlDbType.HasFlag(NpgsqlDbType.Multirange)
|| para.NpgsqlDbType.HasFlag(NpgsqlDbType.Range))
{ // 如果是包含特殊类型
sqlParas.Add(new SugarParameter(para.ParameterName, para.Value)
{
CustomDbType = para.NpgsqlDbType
});
}
else
{ // 不是特殊类型
sqlParas.Add(new SugarParameter(para.ParameterName, para.Value, para.DbType));
}
}
return sqlParas;
}
我使用 Ado 进行数据获取时,无法在 SugarParameter 中设置 NpgsqlDbType.Jsonb 的处理,有办法自定义类型转换吗?或者其他什么方式进行处理?感谢