所有

所以我得在LINQ到SQL转换为使用CompiledQueries加快速度我所有的选择查询。伟大的作品迄今select语句,但我一直无法弄清楚如何预编译的INSERT,UPDATE或DELETE语句。

当然,当你插入,删除或LINQ到SQL更新,你必须使用对象模型。但沿着它生成一个查询,该查询将是很好的预编译和在静态成员存储。的方式明显某处

这是可能的?是什么样的更新LINQ性能,删除和插入时,它不是预编译?我可以看到它是比选择快了很多,因为他们做什么下面是一个简单了很多,少“动态” ...

有帮助吗?

解决方案

有一个很大的不同。 LINQ到SQL SELECT查询可以是大型复杂的表达式树。它的这些,可能需要一段时间“编制”。在这种情况下凝聚到可以对SQL Server运行一些T-SQL。因此,它是有意义的缓存一个操作的结果,以便它可以被重新使用。

然而其他删除,更新和插入是简单的操作不需要表达式树转换为T-SQL(LINQ本身是所有关于查询)。它只是不幸的是,我们已经被训练成认为,作为“查询”这些执行其他操作的SQL代码,我们不会在实际工作要求的任何信息。

这些操作仅由DataContext的定义不是由LINQ因此用以执行这些功能已经编译的代码。

其他提示

我觉得三个只能插入将使意义能够编译和重新使用,因为删除是平凡简单(DELETE FROM表,其中关键...)和UPDATE只更新已更改的领域,所以每变化更新操作。

[)amien

L2S使用“sp_executesql的”,以便在运行它在第一时间之后它就会在存储过程中执行计划缓存。后续运行(相同的查询 - 不是同一PARAMS)将重用从缓存中编译的计划。那么,你所要求的由“幕后”的SQL Server。

是自动处理
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top