Есть несколько вещей, которые я делаю при использовании L2S, которые значительно улучшают ситуацию.
1) Используйте оператор using , как вы показали в своем вопросе.Это правильный способ делать вещи
2) Если я делаю запрос только для чтения ... Я устанавливаю (DataContext) .ObjectTrackingEnabled = false.Это в основном не отслеживает объекты и немного повышает производительность.По умолчанию он имеет значение true.
3) Если я использую запрос более 5 раз в программе, я предварительно компилирую запрос, чтобы все произошло быстрее, чем они бы.Есть несколько предостережений с этим подходом, но использование .ToList () в конце, кажется, исправит их все для меня: D Ссылка на продолжение: http://www.codinghorror.com/blog/2010/03/compiled-or-bust.html
Стоит помнить, что каждый раз, когда вы создаетеконтекст данных, вы получаете последние данные.Например, вы создаете экземпляр класса контекста данных, другой пользователь обновляет таблицу, вы ее не увидите (или, по крайней мере, я никогда этого не сделаю, но это может быть способ, которым я делаю вещи. Так что будьте осторожны).:)
Пример кода (не проверено) :
protected void MyFunction()
{
using(MyDataContext db = new MyDataContext())
{
// uncomment the following line for read only queries
// db.ObjectTrackingEnabled = false;
// implementation here
}
}