gpt4 book ai didi

entity-framework-6 - ODP.net 12c release 3 : How to config Number(1, 0) 在某些情况下映射到 bool,在某些情况下映射到 int16

转载 作者:行者123 更新时间:2023-12-01 16:16:10 27 4
gpt4 key购买 nike

问题

我有一个这样的表:

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) : error 2019: Member Mapping specified is not valid. The type 'Edm.Boolean[Nullable=True,DefaultValue=]' of member 'MyBoolField' in type 'Model.MyModel' is not compatible with 'OracleEFProvider.number[Nullable=True,DefaultValue=,Precision=1,Scale=0]' of member 'MyBoolField' in type 'Model.Store.MyModel'.

我试着交换这两行

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

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

Models.MyTestApp.msl(42,12) : error 2019: Member Mapping specified is not valid. The type 'Edm.Int16[Nullable=True,DefaultValue=]' of member 'MyShortField' in type 'Model.MyModel' is not compatible with 'OracleEFProvider.number[Nullable=True,DefaultValue=,Precision=1,Scale=0]' of member 'MyShortField' in type 'Model.Store.MyModel'.

bool 映射覆盖了我的短字段。

问题

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

最佳答案

您不能像您尝试的那样将 NUMBER(1,0) 映射到 short 和 bool。您需要将 NUMBER(1,0) 专用于 bool 列,并将您想要映射到 short 的那些列更改为 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>

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

关于entity-framework-6 - ODP.net 12c release 3 : How to config Number(1, 0) 在某些情况下映射到 bool,在某些情况下映射到 int16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28495067/

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