OracleのテーブルからEntity Data Modelを生成した時に型がおかしくなるから困った
VB.NETの話です。 OracleのテーブルからEntity Data Model作る時にPropertyの型が適切にならないという問題の対処メモ。
現在、Visual Basic 2010でADO.NET Entity Frameworkを使用して開発しています。 データベースはOracle 10gです。
で、Visual Studioを使って、物理テーブルからEntity Data Modelを作成したんですが、 NUMBER(5,0)のカラムのEntityのプロパティがInt16になって、32767を超える値を設定・取得できない、という問題発生。 Int16 構造体 (System)
調べると以下の様な記述を見つけました。 ADO.NET Entity Framework and LINQ to Entities
上記を参考にApp.configの<configuration>の下に以下を追記し、Entity Data Modelを再作成するとNUMBER(5,0)のカラムはInt32になりましたー。 NUMBER(5,0)(以上)のPropertyの型はInt32で作ってねって言ってあげとくってことでしょうか。
<oracle.dataaccess.client> <settings> <add name="int16" value="edmmapping number(4,0)" /> <add name="int32" value="edmmapping number(5,0)" /> </settings> </oracle.dataaccess.client>
しかし、それでも不安定みたいです。この記述を入れてModel再作成しても、たまにInt16になったりします。 大体もう1回作り直すと大丈夫みたいですが。
実はこの問題の前にNUMBER(1,0)がBooleanになるって問題もあったんですけど、 そん時はDBの型をVARCHAR2(1)にして対応しちゃいました。。。
しかし、ハマるかなーと思ったけど、メンバーに相談しながらやってみたら解決出来ました。 (そのメンバーも全然詳しくは無いんですけどね) やっぱり人に相談、話してみるってのは色々と大切ですね、って改めて実感。