我正在使用Entity Framework 6.1.3和一个Oracle数据库。我在数据库中有一个number(10)字段,它会自动映射到int32。但是该字段的最大值可以是9.999.999.999,这对于int32来说太大了。因此,我在app.config中添加了自己的映射:
<oracle.manageddataaccess.client>
<version number="*">
<edmMappings>
<edmNumberMapping>
<add NETType="int64" MinPrecision="10" MaxPrecision="19" DBType="Number" />
</edmNumberMapping>
</edmMappings>
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />
</dataSources>
</version>
但由于我这样做了,所以只要执行第一个使用EF的操作,我就会得到一个异常:
An unhandled exception of type '...' occurred in DataAccessLayer.dll
Additional information: Schema specified is not valid. Errors:
Model.PatModel.msl(2778,12) : error 2019: Member Mapping specified is not valid. The type 'Edm.Int64[Nullable=True,DefaultValue=]' of member 'MIN_OUTPUTQUANTITY' in type '...' is not compatible with 'OracleEFProvider.number[Nullable=True,DefaultValue=,Precision=10,Scale=0]' of member 'MIN_OUTPUTQUANTITY' in type '...'.
Model.PatModel.msl(2784,12) : error 2019: Member Mapping specified is not valid. The type 'Edm.Int64[Nullable=True,DefaultValue=]' of member 'MAX_OUTPUTQUANTITY' in type '...' is not compatible with 'OracleEFProvider.number[Nullable=True,DefaultValue=,Precision=10,Scale=0]' of member 'MAX_OUTPUTQUANTITY' in type '...'.如何使用数字(10)作为Int64/long?
发布于 2018-11-20 15:01:33
你的(和我的)问题是2.147.483.647和9.999.999.999之间的数字不适合标准的int32映射。
我将这一行添加到App.config中,并从edmx重新生成所有内容:
<oracle.manageddataaccess.client>
<version number="*">
<edmMappings>
<edmNumberMapping>
...
<add DBType="Number" NETType="int64" MinPrecision="10" MaxPrecision="10" />
</edmNumberMapping>
</edmMappings>
</version>
</oracle.manageddataaccess.client>https://stackoverflow.com/questions/38504127
复制相似问题