0

私が割り当てられたこの現在のプロジェクトでは、次のバージョン 3.1 レベルを使用しています。

Microsoft.Practices.EnterpriseLibrary.Common;
Microsoft.Practices.EnterpriseLibrary.Data;

Ent Lib の機能についてもっと知ろうとすると、さまざまなバージョン (3.1、4.0、および 5.0 だと思います) に関する記事やドキュメントがたくさん出てきます。

一般に、新しいバージョンは、以前のリリースの Ent Lib 用に作成されたアプリケーション コードで動作しますか? 継承したこのアプリのすべてのソース コードを調査したわけではありませんが、データ アクセス アプリケーション ブロックの「基本」のみが使用されていると思います。典型的なコードは次のとおりです。

        public override List<Erx.Action> GetAll(bool bIsActive)
    {
        Database db = null;
        DbCommand cmd = null;
        List<Erx.Action> lst = null;
        IDataReader iRdr = null;
        try
        {
            db = DatabaseFactory.CreateDatabase();
            cmd = db.GetStoredProcCommand("Mst_GetAllCorrectiveAction");
            db.AddInParameter(cmd, "@CorrectiveActionID", DbType.Int32, -1);
            db.AddInParameter(cmd, "@IsActive", DbType.Boolean, bIsActive);
            iRdr = db.ExecuteReader(cmd);

            lst = new List<Erx.Action>();

            while (iRdr.Read())
            {
                Action objAction = new Action();
                objAction.CorrectiveAction = iRdr["CorrectiveAction"].ToString();
                objAction.CorrectiveActionID = int.Parse(iRdr["CorrectiveActionID"].ToString());
                objAction.IsActive = (bool)iRdr["IsActive"];
                lst.Add(objAction);
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            db = null;
            iRdr.Close();
            if (cmd != null)
            {
                cmd.Dispose(); cmd = null;
            }
        }
        return lst;
    }

率直に言って、これは通常の ADO.Net を超えるものを提供しているようには見えませんが、新しいバージョンでは物事がより単純になっている可能性があります (Unity について非常に良いことを聞いたことがあります)。

4

2 に答える 2

1

Ent Lib 4.1 をインストールし、ドキュメントを詳しく調べたところ、「データ アクセス アプリケーション ブロックの紹介」でこれを見つけました。

変更された機能、バージョン 3.1 以降

通常、データ アクセス アプリケーション ブロックの以前のリリースを使用して構築されたアプリケーションは、コードを変更しなくても、このリリースで機能します。新しいアセンブリを参照するように参照を更新し、正しいバージョンのアセンブリを参照するように構成ファイルを更新する必要がある場合があります。ただし、バージョン 3.1 (2007 年 5 月) ではデータ アクセス アプリケーション ブロックにいくつかの変更が加えられており、現在のバージョンの Enterprise Library にアップグレードすると、以前のバージョン用に作成されたアプリケーションに影響を与える可能性があります。以下のセクションでは、これらの変更について説明します。

.NET Framework 2.0 の TransactionScope クラス .NET Framework 2.0 の TransactionScope クラスを利用するために、Enterprise Library のバージョン 3.1 以降では、データベース クラス メソッドの一部が変更されています。ExecuteNonQuery などのこれらのメソッドは、GetConnection メソッドを GetOpenConnection メソッドに置き換えることで、TransactionScope インスタンスがアクティブであることを認識するように変更されました。Database クラスから継承するクラスを作成した場合は、これらの変更を考慮してコードを書き直す必要があります。GetConnection メソッドを引き続き使用すると、コンパイラの警告が表示されます。さらに、アプリケーションで ExecuteXmlReader メソッドを使用している場合は、コードを書き直して、接続を閉じる前に TransactionScope インスタンスがアクティブかどうかをテストする必要がある場合があります。詳細については、TransactionScope クラスの使用を参照してください。 strong text SQL Server Compact Edition Enterprise Library 3.1 – 2007 年 5 月以降では、SQL Server Compact Edition (CE) がサポートされます。SQL Server CE は、リレーショナル データベースの基本機能を提供し、ローカル データ ストアを必要とするが SQL Server の全機能を必要としないデスクトップおよびモバイル アプリケーションを対象としています。詳細については、データベース オブジェクトの作成の「SQL Server CE の使用」セクションを参照してください。

私はまだ、この DAAB が本当に有用であるかを理解しようとしています。DAAB の支援を受けていない ADO.NET で必要とされるコードよりもわずかに少ないコードを最終的に記述するには、膨大な量のドキュメントを読む必要があるようです。[MS SQL Server からの] Oracle と言うより簡単なスイッチを提供したい場合、これは物事を構成するための便利な方法だと思います。

于 2009-12-22T19:59:20.050 に答える
0

単体テストならnewに移植して実行して見て、ResharperならVStudioでソリューションを解析してエラーを指摘してくれるので時間がかかります。

于 2009-12-28T15:01:21.580 に答える