C# HanaDecimal没有可序列化的属性
我正在尝试将Dapper与Hana provider结合使用(Hana.Net Core 2.1 ADO.Net provider,参见SAP库“SAP Hana平台的SAP Hana客户端接口编程参考”)。使用casualC# HanaDecimal没有可序列化的属性,c#,hana,C#,Hana,我正在尝试将Dapper与Hana provider结合使用(Hana.Net Core 2.1 ADO.Net provider,参见SAP库“SAP Hana平台的SAP Hana客户端接口编程参考”)。使用casualDataReader时一切正常,但当我尝试使用包含decimal类型的实体类时,出现了一个问题: 公共类SomeType { 公共字符串文本{get;set;} 公共十进制值{get;set;} } var resultSet=hanaConnection.Query(“一些
DataReader
时一切正常,但当我尝试使用包含decimal类型的实体类时,出现了一个问题:
公共类SomeType
{
公共字符串文本{get;set;}
公共十进制值{get;set;}
}
var resultSet=hanaConnection.Query(“一些hana sql”);
很遗憾,将引发以下异常:
在程序集“Sap.Data.Hana.Core.v2.1”中键入“Sap.Data.Hana.HanaDecimal”,
版本=2.4.151.0,区域性=中性,PublicKeyToken=0326b8ea63db4bc4'
未标记为可序列化
我尝试为十进制
创建自己的类型处理程序,但运气不佳:
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;
}
}
公共类DecimalTypeHandler:SqlMapper.TypeHandler
{
公共重写十进制解析(对象值)
{
返回Convert.ToDecimal(值);
}
公共覆盖无效设置值(IDbDataParameter参数,十进制值)
{
参数值=值;
}
}
映射器甚至没有被调用,所以我假设在从数据库获取数据时抛出了这个错误
由于我无法将
Serializable
属性添加到专有的、源代码已关闭的程序集,是否有任何解决方法?在查询之前添加类型处理程序:
SqlMapper.AddTypeHandler(new DecimalTypeHandler ());
var resultSet = hanaConnection.Query<SomeType>("some hana sql");
SqlMapper.AddTypeHandler(新的DecimalTypeHandler());
var resultSet=hanaConnection.Query(“一些hana sql”);
在查询之前添加类型处理程序:
SqlMapper.AddTypeHandler(new DecimalTypeHandler ());
var resultSet = hanaConnection.Query<SomeType>("some hana sql");
SqlMapper.AddTypeHandler(新的DecimalTypeHandler());
var resultSet=hanaConnection.Query(“一些hana sql”);
感谢Marc Gravell指导我查看堆栈跟踪,结果发现序列化是由其他人添加的,与dapper无关
所有操作都是使用问题中提供的
DecimalTypeHandler
。感谢Marc Gravell指导我查看堆栈跟踪,结果发现序列化是由其他人添加的,与dapper无关
所有操作都使用问题中提供的
DecimalTypeHandler
。HanaDecimal是一种结构:@jdweng still-dapper检测到它没有标记[Serializable]
属性。@pwas hi;这里的主要整洁的作者;我可以查看该异常的堆栈跟踪吗?我不记得曾经检查或关心过[Serializable]
;事实上:Find all“serializable”、子文件夹、Find Results 1、完整解决方案、“*.*”匹配行:0匹配文件:0搜索的总文件数:196
只要属性/类是公共的,序列化程序将在没有[serializable]的情况下工作。问题是类型错误。它不是小数,而是一种结构。@pwas k;删除标记,然后-因为这似乎不相关HANADECIMAL是一个结构:@jdweng still-dapper检测到它没有标记[Serializable]
属性。@pwas hi;这里的主要整洁的作者;我可以查看该异常的堆栈跟踪吗?我不记得曾经检查或关心过[Serializable]
;事实上:Find all“serializable”、子文件夹、Find Results 1、完整解决方案、“*.*”匹配行:0匹配文件:0搜索的总文件数:196
只要属性/类是公共的,序列化程序将在没有[serializable]的情况下工作。问题是类型错误。它不是小数,而是一种结构。@pwas k;删除标签,然后-因为这似乎没有关系,我添加了它,如问题中所述-没有运气。请看更新的答案;尝试重新定义仍不工作的Handler。甚至没有调用类型处理程序-首先抛出异常。我已经按照问题中的说明添加了它-没有运气。请查看更新的答案;尝试重新定义仍不工作的Handler。甚至没有调用类型处理程序-首先抛出异常。