C# iSeries中压缩小数对应的数据类型是什么?
尝试编写一个简单的API来访问带有压缩十进制字段的Db2数据库表。如果不转换值,C#中是否有相应的数据类型?我一直收到不匹配的数据类型错误 {“指定的强制转换无效。”} 数据:{System.Collections.ListDictionaryInternal} HResult:-2147467262 帮助链接:空 InnerException:null 消息:“指定的强制转换无效。” 来源:“IBM.Data.DB2.Core” StackTrace:“在IBM.Data.DB2.Core.DB2DataWrapper.get_Int32Value()\r\n在IBM.Data.DB2.Core.DB2DataReader.GetInt32(Int32 i)\r\n在Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerableC# iSeries中压缩小数对应的数据类型是什么?,c#,db2-400,C#,Db2 400,尝试编写一个简单的API来访问带有压缩十进制字段的Db2数据库表。如果不转换值,C#中是否有相应的数据类型?我一直收到不匹配的数据类型错误 {“指定的强制转换无效。”} 数据:{System.Collections.ListDictionaryInternal} HResult:-2147467262 帮助链接:空 InnerException:null 消息:“指定的强制转换无效。” 来源:“IBM.Data.DB2.Core” StackTrace:“在IBM.Data.DB2.Core.D
1.AsyncEnumerator.d_17.MoveNext()\r\n在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n在System.Runtime.CompilerServices.ValueTaskAwaiter
1.GetResult()\r\n位于Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.d\u 221.MoveNext()\r\n位于System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n位于Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.d\u 22
1.MoveNext()\r\n位于System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n位于System.Runtime.CompilerServices.TaskAw
aiter.ThrowForNonSuccess(Task Task)\r\n在System.Runtime.CompilerServices.taskwaiter.HandleNonSuccessAndDebuggerNotification(Task Task)\r\n在System.Runtime.CompilerServices.taskwaiter1.GetResult()\r\n在CoreCodeCamp.Data.TestRepository.d\u 6.MoveNext()上在TestRepository.cs中:第60行\r\n在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)中在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中\r\n在TestController.cs中的CoreCodeCamp.Controllers.TestController.d_u4.MoveNext()处的System.Runtime.CompilerServices.TaskAwaiter
1.GetResult()\r\n
TargetSite:{Int32 get_Int32Value()}
这是代码
DB2表格:
Field Type Length
CAMPID P 5,0
NAME A 50
MONIKER A 20
EVENTDATE Z 26
LENGTH S 3,0
LOCATIONID P 5,0
CampsController.cs:
[HttpGet]
public async Task<ActionResult<CampModel[]>> Get(bool includeTalks = false)
{
try
{
var results = await _repository.GetAllCampsAsync(includeTalks);
return _mapper.Map<CampModel[]>(results);
}
catch (Exception)
{
return this.StatusCode(StatusCodes.Status500InternalServerError, "Database Failure");
}
}
Camp.cs实体:
namespace CoreCodeCamp.Data
{
public class Camp
{
public int CampId { get; set; }
public string Name { get; set; }
public string Moniker { get; set; }
public Location Location { get; set; }
public DateTime EventDate { get; set; } = DateTime.MinValue;
public int Length { get; set; } = 1;
public ICollection<Talk> Talks { get; set; }
}
}
namespace CoreCodeCamp.Data
{
公营班级营
{
公共int CampId{get;set;}
公共字符串名称{get;set;}
公共字符串名字对象{get;set;}
公共位置位置{get;set;}
public DateTime EventDate{get;set;}=DateTime.MinValue;
公共整数长度{get;set;}=1;
公共ICollection会话{get;set;}
}
}
Repository.cs:
public async Task<Camp[]> GetAllCampsAsync(bool includeTalks = false)
{
_logger.LogInformation($"Getting all Camps");
IQueryable<Camp> query = _context.Camps;
return await query.ToArrayAsync();
}
公共异步任务GetAllCampsAsync(bool includeTalks=false)
{
_logger.LogInformation($“获取所有营地”);
IQueryable查询=_context.Camps;
返回wait query.ToArrayAsync();
}
您应该显示您的代码 但是IBMI.NET数据提供程序应该有一个iDB2Decimal结构,用于压缩数字 IDB2 Decimal.Value返回C#十进制类型 编辑
好的,所以你们都有压缩的十进制
campidp5,0
和分区十进制
长度S3,0
应与iDB2Decimal和iDB2Numeric相对应
它们都有一个返回C#十进制的Value属性
因此,我建议将您的模型从int
更改为Decimal
,改为这两个字段。位置也打包在数据库中,我不确定你用
位置类型做了什么。。。
位置ID P 5,0
公共位置位置{get;set;}
您应该显示您的代码
但是IBMI.NET数据提供程序应该有一个iDB2Decimal结构,用于压缩数字
IDB2 Decimal.Value返回C#十进制类型
编辑
好的,所以你们都有压缩的十进制campidp5,0
和分区十进制长度S3,0
应与iDB2Decimal和iDB2Numeric相对应
它们都有一个返回C#十进制的Value属性
因此,我建议将您的模型从int
更改为Decimal
,改为这两个字段。
位置也打包在数据库中,我不确定你用位置类型做了什么。。。
位置ID P 5,0
公共位置{get;set;}
它是IBM格式。有几种类型。DoWebSearchforWikiIBMPackedDecimal DB2是一个ibm数据库,它使用的格式可以追溯到20世纪60年代,并且在穿孔卡片上使用了PackedDecimal。多年来,IBM改进了其中一些格式,所以IBM的格式有很多种,这就是IBM格式。有几种类型。DoWebSearchforWikiIBMPackedDecimal DB2是一个ibm数据库,它使用的格式可以追溯到20世纪60年代,并且在穿孔卡片上使用了PackedDecimal。多年来,IBM改进了其中一些格式,所以IBM的格式有很多种。感谢您的快速响应。我已经添加了密码。非常感谢你,查尔斯!这就是答案。谢谢你的快速回复,查尔斯。我已经添加了密码。非常感谢你,查尔斯!这就是答案。
public async Task<Camp[]> GetAllCampsAsync(bool includeTalks = false)
{
_logger.LogInformation($"Getting all Camps");
IQueryable<Camp> query = _context.Camps;
return await query.ToArrayAsync();
}