В свете недавних (крайних) проблем с производительностью 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 ...
? Какие последствия это будет иметь в контексте веб-приложения?
new db
создается новое соединение. Я посмотрел в SubSonic, и они использовали самодельный SharedConnectionScope, чтобы соединения открывались и закрывались автоматически. - person Earlz   schedule 28.06.2011using
, чтобы пул соединений знал, что вы закончили с первым объектом соединения (и сетевым соединением, которое он инкапсулирует) и готов к повторному использованию. - person Joe White   schedule 28.06.2011