Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# iSeries中压缩小数对应的数据类型是什么?_C#_Db2 400 - Fatal编程技术网

C# iSeries中压缩小数对应的数据类型是什么?

C# 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

尝试编写一个简单的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.QueryingEnumerable
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 22
1.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.taskwaiter
1.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();
}