7

私は MyWebpage.aspx.cs のようにメソッドを持っています:

public partial class MyWebpage : PageBase
{
    private readonly DataAccessLayer dataAccessLayer;

    protected string GetMyTitle(string myVar, string myId)
    {
        if (string.IsNullOrEmpty(myVar))
        {
            return string.Empty;
        }

        return dataAccessLayer.GetMyTitle(Convert.ToInt32(myId), myVar);
    }
}

DataAccessLayer クラスには、DB と通信して DAL 処理を行い、タイトルを返すメソッドがあります。

MyWebPage.aspx.cs クラスから DAL にアクセスする際のベスト プラクティスは何ですか (毎回新しい DataAccessLayer() オブジェクトを作成する必要がありますか? PageBase クラスのどこで作成する必要がありますか、コード ビハインドで呼び出すたびに?

4

2 に答える 2

9

まず、コード ビハインドまたはプレゼンテーション レイヤーから DAL にアクセスすることは、一般的にお勧めできません。この場合、ビジネス ロジック コードをコード ビハインド (プレゼンテーション レイヤー) に配置する必要があるため、懸念の競合、高い結合、重複、およびその他の多くの問題が発生します。したがって、ベスト プラクティスを探している場合は、次のリンクを参照することをお勧めします。

そして、これらは本当に良い本です:

また、DALを呼び出すための静的関数を持つことについて。ご存知のように、静的関数はマルチスレッドに対して脆弱であるため、DAL 関数で共有されているもの (共有接続、コマンドなどの場合もあります) を使用している場合、コードが壊れてしまうので、このレイヤーでは静的関数を避けてください。

于 2012-12-06T02:10:44.287 に答える
0

私はリポジトリ パターンのファンです。誰もが独自の考え方を持っていますが、ORM ツールと同様に、1 つの SQL テーブル => 1 つのリポジトリで名前を共有するというアイデアが気に入っています。

Entity Framework は DAL をすばやく処理する可能性があり、リポジトリのような DAL パターンを実装することもできます。

これは、SQL 接続文字列を受け取り、エンタープライズ データ アクセス アプリケーション ブロックのかなり標準的な実装を提供するコードジェネレーターです。当たり障りのない SQL スキーマに対して設計されているため、あまり堅牢ではありません。サンプル データベースを使用すると、好みに合わせてデータ アクセス層を設計するために使用できるコード サンプルが提供されます。

于 2012-12-06T01:53:57.417 に答える