, чтобы получить к нему доступ, но делать много-много тысяч последовательных операций получения / вставки / обновления.
Если это то, что вы делаете, вам следует использовать ADO.Net.
Существует пять способов запроса данных одной таблицы с помощью LinqToSql.Здесь они примерно медленнее, чем быстрее:
Последовательное получение
Это медленно, потому что дерево выражений должно быть переведено в sql, и для каждой строки должно выполняться обратное путешествие по базе данных .*
N деревьев выражений и генерация динамических методов.Обращения к базе данных N.
from c in myDC.Customers where c.Id = myId select c;
Последовательный CompiledQuery
1 дерево выражений и генерация динамического метода.Обращения к базе данных N.
Func<MyDataContext, int, IEnumerable<Customer>> compiledQuery =
(dc, i) => from c in dc.Customers where c.Id = i select c;
Ranged получает
N / PageSize дерево выражений и генерацию динамического метода.N / PageSize обходы базы данных.
(from c in myDC.Customers where c.Id > myId order by c.Id select c).Take(pageSize)
Option2
--note, sql server has an upper limit of ~2100 parameters.
from c in myDC.Customers where myIds.Contains(c.Id) select c;
Скомпилированный Ranged получает
1 дерево выражений и генерацию динамического метода.N / PageSize обходы базы данных.
Func<MyDataContext, int, IEnumerable<Customer>> compiledQuery =
(dc, i) => from c in dc.Customers where c.Id > i order by c.Id select c).Take(pageSize)
Option2
--note, .Contains method not supported by compiled query due to varying parameter count.
--instead the expression has to be built from the ground up - this is hard, but not impossible.
Табличный дамп
1 дерево выражений и генерация динамического метода.1 база данных туда и обратно.Недостаток - таблица может быть слишком большой для хранения в памяти, или запрос может выполняться в течение тайм-аута.
from c in myDC.Customer select c;
В ADO.Net вы не выполняете преобразование Expression-> Sql и методэто превращает строки DataReader в объекты, написанные вами, а не генерируемые динамически.По умолчанию производительность должна быть на уровне CompiledQuery.