Moo*_*ozz 2 app-config odp.net entity-framework-6 oracle12c
我有这样一张桌子:
MyModel
MyShortField Number(1,0)
MyBoolField Number(1,0)
Run Code Online (Sandbox Code Playgroud)
我想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>
Run Code Online (Sandbox Code Playgroud)
它没用.好像我的bool映射被覆盖了int16.有运行时异常
Models.MyTestApp.msl(21,12):错误2019:指定的成员映射无效.类型'Model.MyModel'中成员'MyBoolField'的类型'Edm.Boolean [Nullable = True,DefaultValue =]'与'OracleEFProvider.number不兼容[Nullable = True,DefaultValue =,Precision = 1,Scale = 0 ''成员'MyBoolField'在'Model.Store.MyModel'类型中.
我尝试交换这两行
<add NETType="int16" MinPrecision="1" MaxPrecision="5" DBType="Number"/>
<add NETType="bool" MinPrecision="1" MaxPrecision="1" DBType="Number"/>
Run Code Online (Sandbox Code Playgroud)
这一次,上面的错误消失了,但是出现了新的错误.
Models.MyTestApp.msl(42,12):错误2019:指定的成员映射无效.类型'Model.MyModel'中成员'MyShortField'的类型'Edm.Int16 [Nullable = True,DefaultValue =]'与'OracleEFProvider.number不兼容[Nullable = True,DefaultValue =,Precision = 1,Scale = 0 ''成员'MyShortField'在'Model.Store.MyModel'类型中.
我的短场被布尔映射覆盖了.
有可能做我想做的事吗?我不想在数据库方面做任何改动.
像你正在尝试的那样,短片和布尔都不能有NUMBER(1,0)张地图.您将需要专门为bool列使用NUMBER(1,0),并将要映射的列更改为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>
Run Code Online (Sandbox Code Playgroud)
交换映射时错误不同的原因似乎是因为,当存在多个可应用于特定数据库数据类型的映射时,无论哪个最后声明优先级.
| 归档时间: |
|
| 查看次数: |
3956 次 |
| 最近记录: |