1

これについていくつかの疑問が浮かんでいますが、実際に答えられたものはありません.

基本的に - 現在使用されている enlib (6.0) 用の ODP.NET の実装はありますか? それとも、ODP.NET 用のマッピング / カスタム DAO を作成する道をたどる必要がありますか?

汎用データベースはこれまでのところ私を得ることができます.Oracleストアドプロシージャではフラットになります(恐ろしい「パラメータ検出は、GenericDatabaseを使用した接続ではサポートされていません.パラメータを明示的に指定するか、Databaseから派生したタイプを使用するように接続を構成する必要があります.パラメータ検出のエラーをサポートします)

私は entlibcontrib プロジェクトを認識していますが、2011/entlib 5.0 以降、新しい解放が行われていないため、これは保留/停止されているようです。

entlib のカスタム DAO 開発に関する指針やアドバイスをいただければ幸いです。

4

2 に答える 2

2

これに対する私たちの公式見解は次のとおりです。

Oracle データベースを使用している場合は、Enterprise Library に含まれている Oracle プロバイダーと ADO.NET Oracle プロバイダーを使用できます。これには、アセンブリSystem.Data.OracleClient.dllを参照または追加する必要があります。ただし、 OracleClientプロバイダーはバージョン 4.0 の .NET Framework では非推奨であり、このプロバイダーのサポートは Enterprise Library 6 では非推奨であることに注意してください。OracleClient プロバイダーのサポートは Enterprise Library 6 にまだ含まれていますが、今後の開発のために、別の Oracle ドライバを使用するデータベース クラスの別の実装を選択することを検討する必要があります。

EntLib6 用の ODP.NET の実装に遭遇したことはありません。v5.0 の EntLibContrib で利用可能なものを更新することになった場合は、他の人が恩恵を受けられるように、それを contrib サイトに投稿してください。v6 では DAAB に大きな変更はありません。

より良い回答があればよかったのですが、最終的には、リリースのストーリーの優先順位付けに帰着し、これは私のチームが取り上げるのに十分なスタックランクではありませんでした.

于 2013-07-28T01:31:37.283 に答える
0

ODP.NET とエンタープライズ ライブラリの GenericDatabase オブジェクトを使用して、Oracle 11g に正常に接続しています。

Oracle パッケージでストアド プロシージャを実行する際に問題が発生し (正確なエラーの内容は忘れましたが、コマンドが実際に使用される前に破棄されるという問題がありました)、それに対処するためにエンタープライズ ライブラリに小さな変更を加えました。 .

SprocAccessor.cs で、変更しました

public override IEnumerable<TResult> Execute(params object[] parameterValues)

このように見える

public override IEnumerable<TResult> Execute(params object[] parameterValues)
{
    using (DbCommand command = Database.GetStoredProcCommand(procedureName))
    {            
        parameterMapper.AssignParameters(command, parameterValues);                
        //return base.Execute(command);  Removed 

        //foreach added by ngpojne.  This allows the command to be used before it is disposed of.
        foreach (TResult result in base.Execute(command))
        {
            yield return result;
        }
    }
}
于 2014-06-12T14:38:12.843 に答える