Какой из двух приведенных ниже методов запроса, использующих Entity Framework 4.0 для генерации SQL-запроса, значительно быстрее ?Первый использует два блока «Using», а второй - только один.Оба метода требуют двух обращений к базе данных, но первый метод закрывает соединение дважды, а второй закрывает его один раз.Я предполагаю, что эти два метода примерно одинаковы по скорости и существенно не отличаются по скорости выполнения друг от друга - правда?Однако предположим, что к этим методам, которые являются методами веб-служб, обращаются очень интенсивно, примерно 2000 раз в секунду, так что помогает каждый маленький кусочек производительности.Должен ли я переписать код версии I как версию II?
Спасибо.
//VERSION I: TWO USING BLOCKS IN SERIES, THE OUTPUT OF THE FIRST AFFECTING THE SECOND
List<Categories> CategoryList = new Categories();
using (EntityFramework1 context = new EntityFramework1())
{
try
{
var Cats = from C in context.Categories
select C);
CategoryList = Cats.ToList();
}
catch (Exception) {}
}
}
} //end of first using block
using (EntityFramework1 context = new EntityFramework1())
{
try
{
Var CustomersFromZipCOde = context.Customers.Where (custo => custo.CustomerID==customerIDString && custo.ZipCode.StartsWith(ZipCodeString) && custo.Customer_Categories.Any(categ => CategoryList.Contains(categ.CategoryID)));
//gives the right output, with CategoryList filled by the earlier query
}
catch (Exception) { }
}
} //end of second using block
//VERSION II: ONE USING BLOCK ONLY--is this significantly faster than Version II?
List<Categories> CategoryList = new Categories();
try
{
using (EntityFramework1 context = new EntityFramework1())
{
var Cats = from C in context.Categories
select C);
CategoryList = Cats.ToList();
Var CustomersFromZipCOde = context.Customers.Where (custo => custo.CustomerID==customerIDString && custo.ZipCode.StartsWith(ZipCodeString) && custo.Customer_Categories.Any(categ => CategoryList.Contains(categ.CategoryID)));
//gives the right output, with CategoryList filled by the earlier query
}
}
catch (Exception) { }