这个LINQ-TO-SQL查询是否会从表中获取所有记录?

时间:2010-12-30 08:13:11

标签: .net linq linq-to-sql ado.net

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”。

如何看到DataContext正在执行的sql命令呢?

1 个答案:

答案 0 :(得分:2)

不,这不应该获取所有行。您只是要求最大值。这应该转换为SQL查询,如下所示:

SELECT MAX(CUSTSERH_CRN) FROM Cust_Master

您可以在执行命令之前将记录器附加到DataContext来验证是否是这种情况,例如:

DataContext.Log = Console.Out;