sur*_*aik 16 .net entity-framework
将.NET布尔数据类型映射到.edmx文件中的oracle数字(1,0)会引发以下错误.
2019年错误:指定的成员映射无效.类型'DBModel.TABLE123'中成员'COLUMN123'的类型'Edm.Boolean [Nullable = False,DefaultValue =]'与'OracleEFProvider.number不兼容[Nullable = False,DefaultValue =,Precision = 1,Scale = 0 ''成员'CHECK_INSTALLATION''类型'DBModel.Store.TABLE123'.
可以使用实体框架将布尔数据类型映射到oracle的数字(1,0)吗?
添加oracle.dataaccess.client部分对我来说还不够.以下内容(取自部署和配置ODP.NET,无需与Entity Framework一起安装)即可运行:
<configuration>
<configSections>
<section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
...
<oracle.dataaccess.client>
<settings>
<add name="bool" value="edmmapping number(1,0)" />
</settings>
</oracle.dataaccess.client>
<oracle.manageddataaccess.client>
<version number="*">
<edmMappings>
<edmMapping dataType="number">
<add name="bool" precision="1"/>
<add name="byte" precision="2" />
<add name="int16" precision="5" />
</edmMapping>
</edmMappings>
</version>
</oracle.manageddataaccess.client>
Run Code Online (Sandbox Code Playgroud)
小智 1
下面是 app.config 的示例,其中包含自定义映射,其中 NUMBER(1, 0) 映射到 Bool,NUMBER(3,0) 映射到 Byte,Int16、Int32、Int64 的最大精度更改为 4分别从默认值 5、10、19 更改为 、9、18:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
</connectionStrings>
<oracle.dataaccess.client>
<settings>
<add name="bool" value="edmmapping number(1,0)" />
<add name="byte" value="edmmapping number(3,0)" />
<add name="int16" value="edmmapping number(4,0)" />
<add name="int32" value="edmmapping number(9,0)" />
<add name="int64" value="edmmapping number(18,0)" />
</settings>
</oracle.dataaccess.client>
</configuration>
Run Code Online (Sandbox Code Playgroud)
以同样的方式,您可以将 .net bool 映射到 Oracle Number(1,0)