此 LINQ-TO-SQL 查询会从表中获取所有记录吗?
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命令呢?
public long GetNewCRN()
{
return ((from c in DataContext.GetTable<Cust_Master>()
select c.CUSTSERH_CRN).Max() + 1);
}
Will this Linq to Sql
query fetch all records from the table first and then select the maximum of the column ?
If yes, then isn't it a bad idea using linq to sql
instead of normal SqlCommand
?
Or is there any other way of doing it in linq to sql
?
When I attach Console.Out, I see nothing(command prompt does not even open).
But when I include following:-
context.Log = new System.IO.StreamWriter("d:\\abcd.txt");
I get an error, that "The process can not access the file because it is being used by another process" and that process is "w3wp.exe".
How can I see the sql commands being executed by DataContext then ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,这不应该获取所有行。您只要求最大值。这应该转换为如下所示的 SQL 查询:
您可以在执行命令之前将记录器附加到 DataContext 来验证情况是否如此,例如:
No this shouldn't fetch all rows. You are only requesting the maximum value. This should be converted to an SQL query like the following:
You can verify that this is the case by attaching a logger to the DataContext before you execute the command, for example: