【问题标题】:ODP.net 12c release 3: How to config Number(1,0) to be mapped to bool in some cases and int16 in some casesODP.net 12c 第 3 版:如何配置 Number(1,0) 在某些情况下映射到 bool 和 int16 在某些情况下
【发布时间】:2015-05-28 19:40:55
【问题描述】:

问题

我有一张这样的桌子:

MyModel
MyShortField Number(1,0)
MyBoolField Number(1,0)

我希望MyBoolField 仅存储 0 和 1,但我希望 MyShortField 存储 1-9。因此,在 edmx 中,我将 MyBoolField 设置为 Boolean 并将 MyShortField 设置为 Int16

我这样配置映射

<oracle.manageddataaccess.client>
  <version number="*">
    <edmMappings>
      <edmNumberMapping>
        <add NETType="bool" MinPrecision="1" MaxPrecision="1" DBType="Number"/>
        <add NETType="int16" MinPrecision="1" MaxPrecision="5" DBType="Number"/>
      </edmNumberMapping>
    </edmMappings>
  </version>
</oracle.manageddataaccess.client>

没有用。似乎我的bool 映射被int16 覆盖。出现运行时异常

Models.MyTestApp.msl(21,12):错误 2019:成员映射 指定无效。类型 成员“MyBoolField”的“Edm.Boolean[Nullable=True,DefaultValue=]” 类型“Model.MyModel”不兼容 'OracleEFProvider.number[Nullable=True,DefaultValue=,Precision=1,Scale=0]' 'Model.Store.MyModel' 类型中的成员 'MyBoolField'。

我尝试交换这两行

<add NETType="int16" MinPrecision="1" MaxPrecision="5" DBType="Number"/>
<add NETType="bool" MinPrecision="1" MaxPrecision="1" DBType="Number"/>

这一次,上面的错误消失了,但是出现了一个新的错误。

Models.MyTestApp.msl(42,12):错误 2019:成员映射 指定无效。类型 成员“MyShortField”的“Edm.Int16[Nullable=True,DefaultValue=]” 类型“Model.MyModel”不兼容 'OracleEFProvider.number[Nullable=True,DefaultValue=,Precision=1,Scale=0]' 'Model.Store.MyModel' 类型的成员 'MyShortField'。

我的短字段被布尔映射覆盖。

问题

有可能做我想做的事吗?我不想在数据库方面进行任何更改。

【问题讨论】:

    标签: entity-framework-6 app-config odp.net oracle12c


    【解决方案1】:

    您不能像您尝试的那样将 NUMBER(1,0) 映射到 short 和 bool。您需要将 NUMBER(1,0) 专门用于 bool 列,并将要映射的列更改为 NUMBER(2,0)。那么映射将是:

    <oracle.manageddataaccess.client>
      <version number="*">
        <edmMappings>
          <edmNumberMapping>
            <add NETType="bool" MinPrecision="1" MaxPrecision="1" DBType="Number"/>
            <add NETType="int16" MinPrecision="2" MaxPrecision="5" DBType="Number"/>
          </edmNumberMapping>
        </edmMappings>
      </version>
    </oracle.manageddataaccess.client>
    

    交换映射时错误不同的原因似乎是因为,当有多个映射可应用于特定数据库数据类型时,以最后声明的为准。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-09
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多