Linqを使用したBLToolkit-「using」ステートメントが必要なのはなぜですか?

asp.net bltoolkit c# linq using
Linqを使用したBLToolkit-「using」ステートメントが必要なのはなぜですか?

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);
        }
    }
}

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

  3  0


ベストアンサー

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

4


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

私が言ったように、それがBLToolkitに特に当てはまるのでそれがBLToolkitに当てはまるかどうかはわかりませんが、うまくいけば正しい方向に向けることができます。 🙂

0


タイトルとURLをコピーしました