鉴于SubSonic 3最近(极端)的性能问题,我们正在寻求迁移ORM,最好尽可能少地重写代码(主要是Linq)。
因此,我正在研究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应用程序有什么影响呢?
new db
语句都会创建一个新的连接。我查看了SubSonic的代码,他们使用了一个自制的"SharedConnectionScope"来实现自动打开和关闭连接。 - Earlzusing
块,以便连接池知道你已经完成了第一个连接对象(以及它所封装的网络连接),并且准备好被重用。 - Joe White