再始動の準備を始めます。
Oracle Client 11.2.0.3 x64
とある環境で「Oracle Provider for OLE DB」を使用する為「Oracle Client 11.2.0.3 x64」の媒体から、それがインストールされていました。しかし、.NET Framework2.0で操作するプログラムを実行すると「'OraOLEDB.Oracle.1' はローカルコンピュータに登録されていません。」とのエラーが返され、目的のDBに接続する事ができません。
このエラー、経験値では、.NETプログラムが「ANY CPU」でコンパイルされていたり、OSがx64で「x32」、またはOSがx32で「x64」でコンパイルされていると発生することが多いのですが、今回はそのあたりの矛盾もない状態。推測すると、「Oracle Provider for OLE DB」がOSに正しくレジストされていない様子。
他のPCで「Oracle Client 11.2.0.1 x64」の媒体からインストールされた環境があるのですが、こちらは正常操作。
結局、「Oracle Client 11.2.0.3 x64」ではなく「Oracle Data Access Component(ODAC) 11.2.0.3 x64」を使用し「Oracle Provider for OLE DB」を再インストールしたところ、正常に動作すように鳴りました。Oracleのサポートに持ち込んだ訳ではないので、断言は出来ませんが、現象からすると「Oracle Client 11.2.0.3 x64」のインストーラーに問題があるようです。
やっぱ、WPF かな...?
.NETでWindowsデスクトップアプリと言えば、WindowsForm だった訳ですが、ここ数日、Windowsデスクトップアプリでの、Entity FrameworkやLinq to Entityあたりを調べてたら、やっぱりもう、WindowsForm ではなく、Windows Presentation Foundation(WPF)だろうということが見えてきた。ただ、私が知る限り、業務系で積極的に採用されているようには見えないので、不安も感じるが、MS的な方向としては確実にWPF。
生産性や保守性はどうなのであろうか?
その辺は、他人が書いた情報を見ているだけではわからないので、やはり自分で試すことが必要。
ちょっと書いてみよう。
ターゲットはより実用的なものがよい。
.NET Framework4.5 + WPF + Entity Framework + Linq + ODP.NET
この組み合わせで何か書いてみよう。
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にも対応していたと思うので、近いうちにそちらも試してみようと思います。
Nexus5(5.0.1)でLTE/3Gが使えなくなった!
1年ほど前に Nexus5をGoogle Playで購入して MVNO(BIGLOBE)のSIM入れて使ってます(妻がw)。
電波は拾っているようなのですが、アンテナのアイコンに「!」が表示されて、モバイルネットワークが使えません。APNを再設定などしてみたけどダメ...
どんどん深みにハマって
system recoveryのメニューから
wipe cache partition を実行して再起動したら、
ロドイド君がお腹を上にして「!」を出しちゃう始末...
きゃぁ〜〜〜やっちまったかぁ?
気を取り直して再度 wipe cache をかけるとリカバリーしたようで
(ボリュームの大や小ボタンで動作が変わるので注意が必要
ちょっと焦ってたので画像取り忘れた orz )
とりあえず元にもどった。が、そもそもの問題は解決せず...
振り出しに戻ったところで、最初から考えて見ることに。
端末の状態を確認すると、
「モバイルデータ通信」が「切断」
と表示されているということは、
単純に「使わない設定」になっているのではないかと。
で、ふと思う。
以前のバージョンで「モバイルデータ通信を有効にする」というメニューは何処へいった?
どうやら
[設定]-[データ使用量]-[モバイルデータ] の オン/オフ
これに変わったらしい。
なんか変じゃないか?このメニュー。
なんで[データ使用量]の中に オン/オフ があるんだよ。
確認すると、なんとここが「オフ」になっているじゃないか!
「オン」に変えると、何事も無かったかのようにアンテナアイコンに「LTE」の表示が...
うーん、やっぱりあまり好きになれないな...Android
(個人的な感想ですw)
OS X/LinuxによるASP.NET 5アプリ開発ガイド
気がつくの、遅れたましたが、
こんな記事が連載されてました。
第1回 ASP.NET 5をOS X/Linuxで使うための準備 (1/5):連載:OS X/LinuxによるASP.NET 5アプリ開発ガイド - @IT
時間作って試したいのであります!(←日本語が変w)
こちらも、要チェック!
2015年に到来する大変革「次期.NET/ASP.NET/Visual Studio、Windows 10」に備えよう ―第7回 業開中心会議 (1/2):連載:業開中心会議議事録 - @IT