gpt4 book ai didi

c# - Oracle 号码映射 (ODP.NET)

转载 作者:太空宇宙 更新时间:2023-11-03 12:00:52 26 4
gpt4 key购买 nike

根据 Oracle 文档,一个 NUMBER(5,0)列可以容纳 Int16和部分 Int32值。我正在开发一个应用程序(使用 ODP.NET)没有 Entity Framework (EF),并且无法在 App.Config 中定义自定义映射 (edmMappings)文件。 ODP.NET在非 EF 应用程序中不支持 edmMappings(至少它们被忽略)。

测试的 edmMappings:

  • <add NETType="int16" MinPrecision="4" MaxPrecision="5" DBType="Number" />
  • <add name="int16" precision="4" /> (note; next one is int32 which is using precision 9)
  • <add name="int16" value="edmmapping number(4,0)" /> (note; next one is int32 which is using precision 9)

这会导致应用程序出现“问题”,因为它在执行包含 NUMBER(5,0) 列的选择查询时需要 Int16 数据类型。

此刻,我只能想到下一个(不是首选)解决方案:

  1. 更改 NUMBER(5,0)列到 NUMBER(4,0) .
  2. 将(NUMBER(5,0) 的)单元格值转换为 Int32 (而不是预期的 Int16 类型)。

是否有可能(总是)映射 NUMBER(5,0)列到 Int16 (.NET 类型)?

(也许我不知道 OracleConnection、OracleDataAdapter 或 OracleDataReader 类的某个设置和/或字段)。

最佳答案

绝对不可能,原因很简单:number(5,0) 可以保存 -99999 到 99999 之间的任何整数,而 int16 只能保存 65536 个不同的值。没有足够的空间用于任何一对一映射。

请注意,这不是任何语言的限制——这在逻辑上是不可能的。

关于c# - Oracle 号码映射 (ODP.NET),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57081616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com