ODP.NET が NuGet に対応してた!
「何をいまさら...」と言われてしまいそうだけど、最近Oracleから少し離れていたら、
ODP.NET 12c Release3(12.1.0.2.1)から、NuGetに対応してたんですね。
発行日は2015/01/16と表示されているので、もう2ヶ月以上も前に...
今回はWindowsFormでの使用を前提に、早速試してみました。
NuGetのパッケージ管理から、Oracleで検索すると現れる赤い12cのアイコンがそれです。
2つあります。ひとつはEntity Framework6対応のドライバ。そしてもうひとつがODP.NETです。
2つ目のODP.NETをインストールすると、依存関係にある、Entity Framework6とEntity Framework6対応のドライバとともにODP.NETがインストールされます。
おお、なんと楽チンなんでしょう(笑)。
App.config が自動で生成されるので、とりあえず下記の箇所を動作させる環境に合わせて書き換えます。
<oracle.manageddataaccess.client> <version number="*"> <dataSources> <dataSource alias="dsn" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hoge)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) "/> </dataSources> </version> </oracle.manageddataaccess.client> <connectionStrings> <add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=foo;Password=bar;Data Source=dsn"/> </connectionStrings> </configuration>
とりあえず、簡単なテストを...
とあるテーブルから、全件をSelectし、textBoxに書き出す。
private void button1_Click(object sender, EventArgs e) { this.textBox1.Text = ""; using (var Conn = new OracleConnection()) { Conn.ConnectionString = ConfigurationManager.ConnectionStrings["OracleDbContext"].ConnectionString; Conn.Open(); string strSQL = "select CODE,NAME1 from TABLE1 order by CODE"; OracleCommand Cmd = new OracleCommand(strSQL, Conn); OracleDataReader Reader = Cmd.ExecuteReader(); while (Reader.Read()) { this.textBox1.Text += Reader.GetString(0) + ":" + Reader.GetString(1) + "\r\n"; } Reader.Dispose(); Cmd.Dispose(); } }
たしか、すでに Code firstにも対応していたと思うので、近いうちにそちらも試してみようと思います。