爲了解SubSonic 3最近(極端)性能問題,我們希望遷移ORM,最好是儘可能少地重寫代碼(主要是Linq)。Linq的BLToolkit - 爲什麼需要使用`using`語句?
所以我在看BLToolkit。我在SubSonic和BLToolkit之間看到的主要區別之一是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應用程序的上下文有什麼影響?
它與連接應該被限制在可能的最小工作單元的想法有關。我對這個框架並不熟悉,但很可能他們很像EF或LinqToSql那樣管理你的連接。 –
根據我對代碼的看法,每個'new db'語句都有一個新的連接。我查看了SubSonic,他們使用了自制的「SharedConnectionScope」,以便自動打開和關閉連接。 – Earlz
這可能會每次都創建一個數據庫連接對象的新實例,但它不應該創建到數據庫服務器的全新網絡連接。 .NET默認情況下會執行連接池。 –