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
工作。
我正在尝试将 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
工作。