ADO.NET Entity Data Model をOracleで使う

投稿日:

かれこれ数ヶ月のエラー

以前、会社のノートPCのHDDをSSDに変えたわけですが、それからずっと、あるエラーに悩まされておりまして・・・

その内容は、

エラー 175: 不変名が ‘Oracle.ManagedDataAccess.Client’ の ADO.NET プロバイダーがコンピューターまたはアプリケーションの構成ファイルで登録されていないか、読み込めません。詳細については、内部例外を参照してください。

というもの。

これが、とあるプロジェクトのソリューションファイルに発生したまま、解決できませんでした。

客先では問題にならなかった

とあるお客様向けのプログラムだったんですが、とりあえずこのエラーが発生している状況でビルドしたものでも動作確認が取れたので、そのまま保留に・・・

そんな、保留にしていてもいけないんですが、当時、エラー内容などで調査するも、めぼしい情報はヒットせず。
もしくは、英語のページが見つかるばかり。
ざっくり流し読みしてみるも、具体的な解決案は見つからない状況。

修正が必要になったため、エラーの調査開始

今度は英語のページももうちょっと読み込んでみました。

で、検索ワードを変えたりしつつたどり着いたのがこのページ。

ASP.NET MVC の Entity Framework で Oracle 既存DB 使いたい
http://d.hatena.ne.jp/sora235/20160621/1466476656

どんぴしゃという訳じゃないんですが、

こんな記事もあるけど、やっぱりOracle Developer Tools for VS2015のインスト、いりそう。

結果>

ODT for VS2015 インストしていないとOracleDBに繋がらないみたい。

モデル > 追加 > 新しい項目 で、「ADO.NET Entity Data Model」を選択する。

の辺りですが、Oracle Developer Tools for VS2015が妙にひっかかり調べてみると、案の定インストールされていない。
実際、HDD時代にインストールされていたか・・・は不明ですが、インストールしていた気もします。

Oracle Developer Tools for VS2015でドンピシャ!!

試しに、追加してみます。

VSのソリューションエクスプローラ上で追加したいフォルダを右クリックし、「新しい項目の追加」をクリック。

ADO.NET Entity Data Model を選択し、名前を登録し、追加ボタン。

モデルに含めるコンテンツで「データベースからEF Designerを選択肢、次へ。

ここにOracleが存在しないわけです。

この画面はODPのインストール後なので、Oracle接続できている状態ですが、データソースにOracleが選択できませんでした。

当然、次の画面でも、接続情報が作成できません。
件のプロジェクトファイルでは、接続情報自体はconfigファイルとしてあるものの、Oracleへの接続自体が無い状態なので、Oraele用に作成された部分でエラーになっていました。

Oracle Developer Tools for Visual Studio 2015のインストール

http://www.oracle.com/technetwork/jp/developer-tools/visual-studio/overview/index.html

へ接続して、ダウンロードタブを選択。

Oracle Developer Tools for Visual Studio 2015 をクリック。

AcceptLicense Agreementにチェックを入れ、ODTforVS2015_122010.exeをクリックし、ダウンロードする。
(過去のバージョンもあるので、指定があれば、それを選択する)

インストールは、DLしたexeをダブルクリックして、普通にインストール。

そのままじゃ上手くいかない

最初のエラーはこの時点で解消されたんですが、今度は別のエラーが・・・
一筋縄ではいきませんw

早速、デザイナを開こうとしたら、こんなエラーが・・・

Visual Studioを再起動しても、駄目でした。
テキストベースで直接弄る分には問題ないんですが、それだと何のためのデザイナーかとw

Entity Framework 関連でエラーが発生する場合の対処法http://d.hatena.ne.jp/fyts/20090108/entity

近い現象で悩んでた人を発見。
なので、コレにしたがってやって見ます。

ツールボックスで右クリック。

ツールボックスのリセットを実行。

警告されるけど、そのまま続行する。

先のページだと数分ってあったけど、自分の環境では一瞬だった。
ソリューションの規模による?かもしれない。

後は、Visual Studioを再起動。

無事、デザイナで表示されました。
テーブル名やら、項目名やらは勝手ながら塗りつぶしで・・・

まとめ

今回、テーブル変更が必要になったりで、再度調べたわけですが、これでエラーも無くなり、万々歳です。

エラーは解決したけど、発生した仕様修正対応は残るけどねw

とはいえ、次回起きても対応できなさそうなので、メモとして。







-C#, 開発メモ
-,

関連記事

c#:高DPI環境化で、画面レイアウトが崩れる問題

自分の環境は高DPI(125%以上)ではないので、意識していなかったけど、客先環境でハマッたので。 状況は、Multirowを使った表部分が、高DPI環境下(125%)だと、レイアウトが崩れる問題。 …

TortiseSVNなんだけど、自分が原因で「already locked」が出てしまった時の対処法。自分がロックを取ってて、ロックが取れずコミットが出来ない事態に遭遇した・・・

SVNを使っていると、たまにありますね。 ロックが既に誰かに取得されていて、コミットしようとした時に、唖然とするやつ。 ただ、今回は状況が違いました。 いつもなら、「ロック取ってるやつ誰だよ~」って感 …

devenvを使って、プロジェクトをコマンドラインからビルドする方法[VisualStudio]

今日も今日とて休日出勤\(^o^)/   現在、C#をメイン言語として使用しています。 で、当然というか、開発の区切りだったり、テストするためにビルドというものをやります。 このビルド、プロ …

Oracleで「ORA-00918: 列の定義が不明瞭です 」のエラーの解決法と発生理由

発生したエラー ORA-00918: 列の定義が不明瞭です 原因 原因は、同じ列名やテーブルの別名を使用していること。 解決方法 Select句で羅列している列に同一の列名(別テーブル)があれば、as …

続) 何度だって引っかかるORACLEのエラー・・・。ORA-01008:バインドされていない変数があります。

この土日は休日出勤でした・・・ そして、昨日・・・新しい現象が発生しました。 日本の中心付近で仕様変更と闘うSE日記日本の中心付近で仕様変更と闘うSE日記http://ht-jp.net/blog/p …


カテゴリー