3

SubSonic 3 の最近の (極端な) パフォーマンスの問題に照らして、ORM の移行を検討しており、できればできるだけ少ないコード (主に Linq) を書き換えます。

だから私はBLToolkitを見ています。SubSonic と BLToolkit の主な違いの 1 つは、BLToolkit には常にusingステートメントが必要だということです。例えば:

static void SingleTableTest()
{
    using (var db = new NorthwindDB()) //This
    {
        var query =
            from e in db.Employee
            where e.EmployeeID > 5
            orderby e.LastName, e.FirstName
            select e;

        foreach (var employee in query)
        {
            Console.WriteLine("{0} {1}, {2}", employee.EmployeeID, employee.LastName, employee.FirstName);
        }
    }
}

これは正確に何をしますか?データベースの新しいインスタンスを作成すると、新しい接続が作成されますか? これを静的クラスに「ラップ」して、どこからでも実行できるようにすることは合理的でしょうvar q=from e in Database.Employee ...か? これは、Web アプリケーションのコンテキストにどのような影響を与えるでしょうか?

4

2 に答える 2

4

あなたの例の NorthwindDB クラスは DbManager に基づいていると思います。DbManager は Connection のラッパーであり、接続のように動作します。別のクラス - DataContext を試す必要があります。シナリオに合わせて設計されています。

于 2011-06-29T02:29:31.977 に答える
0

BLToolkit はわかりませんが、Entity Framework のようなものを使用して、HTTP 要求ごとに 1 つのオブジェクトだけを使用できるかどうかを知りたいというコメントから。using ステートメントの代わりに、global.asax の Application_BeginRequest イベントで db オブジェクトを作成します。Application_EndRequest で破棄します。オブジェクトは、便利なリクエストごとのコレクションである HttpContext.Current.Items に格納できます。

私が言ったように、私はそれについて何も知らないので、それが BLToolkit に特に当てはまるかどうかはわかりませんが、うまくいけば、正しい方向に向けるのに十分です. :)

于 2011-06-28T19:58:39.990 に答える