Будет ли этот запрос LINQ-TO-SQL получать все записи из таблицы? - PullRequest
2 голосов
/ 30 декабря 2010
public long GetNewCRN()
{
   return ((from c in DataContext.GetTable<Cust_Master>() 
            select c.CUSTSERH_CRN).Max() + 1);
}

Будет ли этот Linq to Sql запрос сначала извлечь все записи из таблицы, а затем выбрать максимум столбца?

Если да, то не плохая ли идея использовать linq to sql вместо обычного SqlCommand?

Или есть ли другой способ сделать это в linq to sql?


Когда я присоединяю Console.Out, я ничего не вижу (командная строка даже не открывается).

Но когда я включаю следующее: -

context.Log = new System.IO.StreamWriter("d:\\abcd.txt");

Я получаю сообщение об ошибке: «Процесс не может получить доступ к файлу, поскольку он используется другим процессом», и этот процесс называется «w3wp.exe».

Как я могу увидеть команды sql, выполняемые DataContext тогда?

1 Ответ

2 голосов
/ 30 декабря 2010

Нет, это не должно извлекать все строки.Вы запрашиваете только максимальное значение.Это должно быть преобразовано в запрос SQL, подобный следующему:

SELECT MAX(CUSTSERH_CRN) FROM Cust_Master

Вы можете убедиться в этом, подключив регистратор к DataContext перед выполнением команды, например:

DataContext.Log = Console.Out;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...