Hatena::ブログ(Diary)

KATSU System Design blog

KATSU System DesignKATSU System DesignのHPへ

2015-03-26

[]ODP.NET が NuGet に対応してた! 23:27

「何をいまさら...」と言われてしまいそうだけど、最近Oracleから少し離れていたら、
ODP.NET 12c Release3(12.1.0.2.1)から、NuGetに対応してたんですね。
発行日は2015/01/16と表示されているので、もう2ヶ月以上も前に...

今回はWindowsFormでの使用を前提に、早速試してみました。
f:id:JF2LFG:20150326230127p:image
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にも対応していたと思うので、近いうちにそちらも試してみようと思います。