HanaDecimal 没有可序列化的属性

HanaDecimal has not a serializable attribute

我正在尝试将 Dapper 与 Hana 提供程序(HANA .Net Core 2.1 ADO.NET 提供程序,cf Microsoft .NET Core Support in SAP Library "SAP HANA Client Interface Programming Reference for SAP HANA Platform")一起使用。使用 casual DataReader 一切正常,但是当我尝试使用包含小数类型的实体 class 和 Dapper 时出现问题:

public class SomeType 
{
    public string Text { get; set; }
    public decimal Value { get; set; }
}

var resultSet = hanaConnection.Query<SomeType>("some hana sql");

不幸的是,抛出以下异常:

Type 'Sap.Data.Hana.HanaDecimal' in Assembly 'Sap.Data.Hana.Core.v2.1, Version=2.4.151.0, Culture=neutral, PublicKeyToken=0326b8ea63db4bc4' is not marked as serializable.

我已经尝试为 decimal 创建自己的类型处理程序,但没有成功:

public class DecimalTypeHandler : SqlMapper.TypeHandler<decimal>
{
    public override decimal Parse(object value)
    {
        return Convert.ToDecimal(value);
    }

    public override void SetValue(IDbDataParameter parameter, decimal value)
    {
        parameter.Value = value;
    }
}

Mapper 甚至都没有被调用,所以我想从数据库中获取数据时会抛出错误。

由于我无法将 Serializable 属性添加到专有的源代码封闭程序集,是否有任何解决方法?

在查询之前添加类型处理程序:

 SqlMapper.AddTypeHandler(new DecimalTypeHandler ());
 var resultSet = hanaConnection.Query<SomeType>("some hana sql");

感谢 Marc Gravell 指导我查看堆栈跟踪,结果发现序列化是由其他人添加的,并且与 dapper 无关。

Everyting 正在使用问题中提供的 DecimalTypeHandler 工作。