2018年9月22日土曜日

ASP.NET MVC 5 OracleのテーブルからEDMを作成するとき、Numerの精度によりint以外にマッピングされる

VisualStudio2017 / ASP.NET MVC 5 / Framework4.6.2 / C# / Oracle.ManagedDataAccess.EntityFramework 12.2.1100


データベースファーストでOracleのテーブルよりEDMを作成すると、Numerの精度により以下のようにマップされます。
Number(1,0)bool
Number(2,0) ~ Number(3,0)byte
Number(4,0)int16
Number(5,0) ~ Number(9,0)int32
Number(10,0) ~ Number(18,0)int64


Numberの精度がNumber(1,0)~Numebre(4,0)の場合に int16 にマップするには、web.config に
<add NETType="int16" MinPrecision="1" MaxPrecision="4" DBType="Number"/>
を追加します。

Web.config
<oracle.manageddataaccess.client>
 <version number="*">
  <edmMappings>
   <edmNumberMapping>
    <add NETType="int16" MinPrecision="1" MaxPrecision="4" DBType="Number"/>
   </edmNumberMapping>
  </edmMappings>
  <dataSources>
   <dataSource alias="XXXXX" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XXX.XXX.XXX.XXX)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XXXXX))) " />
  </dataSources>
 </version>
</oracle.manageddataaccess.client>

0 件のコメント: