Vastbase海量数据库查询byte[]字段报错 返回

SqlSugar
132
SqlSugar.SqlSugarException: SqlSugarException.NotSupportedException: "longblob" Type NotSupported, DbBindProvider.GetPropertyTypeName error.
   at SqlSugar.Check.ThrowNotSupportedException(String message)
   at SqlSugar.PostgreSQLDbBind.GetPropertyTypeName(String dbTypeName)
   at SqlSugar.IDataReaderEntityBuilder`1.BindMethod(ILGenerator generator, EntityColumnInfo columnInfo, Int32 ordinal)
   at SqlSugar.IDataReaderEntityBuilder`1.BindField(ILGenerator generator, LocalBuilder result, EntityColumnInfo columnInfo, String fieldName)
   at SqlSugar.IDataReaderEntityBuilder`1.CreateBuilder(Type type)
   at SqlSugar.DbBindAccessory.<>c__DisplayClass4_0`1.<GetEntityList>b__1()
   at SqlSugar.ReflectionInoCore`1.GetOrCreate(String cacheKey, Func`1 create)
   at SqlSugar.ReflectionInoCacheService.GetOrCreate[V](String cacheKey, Func`1 create, Int32 cacheDurationInSeconds)
   at SqlSugar.DbBindAccessory.GetEntityList[T](SqlSugarProvider context, IDataReader dataReader)
   at SqlSugar.DbBindProvider.DataReaderToList[T](Type type, IDataReader dataReader)
   at SqlSugar.QueryableProvider`1.GetData[TResult](Boolean isComplexModel, Type entityType, IDataReader dataReader)
   at SqlSugar.QueryableProvider`1.GetData[TResult](KeyValuePair`2 sqlObj)
   at SqlSugar.QueryableProvider`1._ToList[TResult]()
   at SqlSugar.QueryableProvider`1.ToList()
   at SqlSugar.QueryableProvider`1.First()
   at 调用入口

代码:

void Main()
{
	using var sugarClient = new SqlSugarClient(new ConnectionConfig
	{
		ConnectionString = "Host=HOST;Username=USER;Port=5432;Database=MYDB;Search Path=MYSCHEMA;No Reset On Close=True;Password=ABCDE",
		DbType = SqlSugar.DbType.Vastbase,
		IsAutoCloseConnection = true,
		MoreSettings = new ConnMoreSettings()
		{
			DisableNvarchar = true //有些版本需要禁用Nvarchar(PS: 官方文档在这有问题,DisableNvarchar 敲成了 DisableNarvchar)
		}
	});
	sugarClient.Queryable<sample_table>().First().Dump();
}

public partial class sample_table
{
	[SugarColumn(IsPrimaryKey = true)]
	public string key { get; set; }
	public byte[] bytes { get; set; }
}

检查发现内部通过DataRecord.GetDataTypeName(ordinal), 从DbDataReader获取由数据库返回的数据库类型名称,而我们进行验证的数据库由MySQL迁移而来,该列似乎在迁移后保留了MySQL中longblob的列名称作为别名,导致报错

image.png
看起来我这边应该先去检查一下迁移数据类型映射问题

热忱回答0