Oracle Clientを用いたデータアクセス制御について

2,412 views
Skip to first unread message

masatakashibuya

unread,
Jan 15, 2018, 8:46:10 PM1/15/18
to OpenTouryoProject
お世話になっております。

OracleClientをインストールしてDBに接続する方法と
OracleClientをインストールせずにDBに接続する方法どちらも試してみたいのですが、

後者のパターンでは、
を有効にするであっているでしょうか。

環境
==============================
データベース : Oracle Database 12c
フレームワーク : .NET 4.7
===========================-==


また、その場合以下のファイルを
OpenTouryo/root/programs/C#/Frameworks/Infrastructure/Public/Db/DamOraClient.cs
OpenTouryo/root/programs/C#/Frameworks/Infrastructure/Public/Db/AllDam.slnに追加してビルドをすればよいでしょうか。

よろしくお願いいたします。

daisukenishino

unread,
Jan 16, 2018, 1:08:01 AM1/16/18
to OpenTouryoProject
違います。

これ(DamOraClient)は、
古のSystem.Data.OracleClient のラッパーライブラリになります。

ODP.NET対応のラッパーライブラリは以下になります。

・DamOraOdp(2.0以前の既定)
 アンマネージドのODP.NETです(Oracleクライアントが必要です)。

・DamManagedOdp(2.1以降の既定)
 マネージドのODP.NETです(Oracleクライアントは不要です)。

現在、VS2017テンプレートを使用しているのであれば、
DamManagedOdpが使用されていると思うので、
DamOraOdpをローカルでビルドして、DLLを作成して参照設定して下さい。

2018年1月16日火曜日 10時46分10秒 UTC+9 masatakashibuya:

masatakashibuya

unread,
Jan 16, 2018, 3:10:59 AM1/16/18
to OpenTouryoProject
OracleException The provider is not compatible with the version of Oracle client
というエラーが出たのですが

Oracle Client 12.1.0 は互換性がないということでしょうか。

よろしくお願いいたします。

2018年1月16日火曜日 15時08分01秒 UTC+9 daisukenishino:

daisukenishino

unread,
Jan 16, 2018, 3:51:19 AM1/16/18
to OpenTouryoProject
エラーメッセージからバージョン間の互換性がないものと思われます。

ODP.NETはOracleClientとのバージョン一致が求められるので、
参照設定しているODP.NETのバージョンに依存すると思うので、
Oracle Clientに対応したODP.NETのバージョンに参照設定を変更して下さい。

- Oracle .NET Software ダウンロード


2018年1月16日火曜日 17時10分59秒 UTC+9 masatakashibuya:

masatakashibuya

unread,
Jan 17, 2018, 12:25:08 AM1/17/18
to OpenTouryoProject
ODP.NETのダウンロードですが以下の手順であっているでしょうか。

ダウンロードページから
利用しているOlacleClientのバージョンにあった
ODACのXcopyのzipをダウンロードして解凍


install.bat を起動すると
OracleHome(例C:\app\client\user\product\12.1.0\client_1)
の場所のODP.NET/bin/4
.NET4以降用のOracle.DataAccess.dllが追加される。


Open棟梁を作成したOracle.DataAccess.dllを参照させてビルド
自分のプロジェクトにも同様に参照させてビルドをしました。

2018年1月16日火曜日 17時51分19秒 UTC+9 daisukenishino:

masatakashibuya

unread,
Jan 17, 2018, 1:34:25 AM1/17/18
to OpenTouryoProject
OracleClientを利用してDBへの接続ができました。

ODP.NETを64bit版でインストールしたのですが
ASPNETWebServiceは既定でx86となっているので、
参照エラーとなることがあります。
デバッグをAnyCPUからx64に固定し、

ここを参考にI
ツール > オプション > プロジェクトおよびソリューション > Webプロジェクト
IIS Expressの64ビットバージョンを使用するにチェックを入れると

上手くいきました。



2018年1月17日水曜日 14時25分08秒 UTC+9 masatakashibuya:

masatakashibuya

unread,
Jan 17, 2018, 1:53:45 AM1/17/18
to OpenTouryoProject
動いたのですが、
プロセッサーアーキテクチャ不一致の警告は消えていませんでした。

2018年1月17日水曜日 15時34分25秒 UTC+9 masatakashibuya:

nishi.74322014

unread,
Jan 17, 2018, 11:53:30 AM1/17/18
to OpenTouryoProject
すいません、気が付きませんでした。明日回答しますが、プロセッサアーキテクチャの不一致の警告は無視してイイと思います。単に参照元がanycpu、参照先がx86 or 64なので警告出しているだけだと思うので。

daisukenishino

unread,
Jan 18, 2018, 1:39:25 AM1/18/18
to OpenTouryoProject
64bit系の問題はコチラにまとめてあります。

https://techinfoofmicrosofttech.osscons.jp/index.php?64bit対応

IIS expressの 64bit対応については追記させて頂きました。

余談ですが、ODP.NET Managed Driverなど、昨今、Any CPUが主流です。

一時、VS2010でEXE を作るプロジェクトのデフォルトが
Any CPU から x86 に変更されましたが、VS2012から再びAny CPU に戻っています。

2018年1月18日木曜日 1時53分30秒 UTC+9 nishi.74322014:

masatakashibuya

unread,
Jan 24, 2018, 8:38:24 PM1/24/18
to OpenTouryoProject
IIS expressの 64bit対応をし、Any CPUにしました。
ありがとうございます。

警告を抑止する方法というのもあったので、
.csprojファイルに
<PropertyGroup>
    <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
</PropertyGroup>
を追加してみました。

ただ一般的に抑止されるので、警告は出しておいたほうがいいとは思います...


2018年1月18日木曜日 15時39分25秒 UTC+9 daisukenishino:
Reply all
Reply to author
Forward
0 new messages