所有,
所以我已经将LINQ-to-SQL中的所有选择查询转换为使用CompiledQueries来加快速度.到目前为止,对于select语句来说效果很好,但是我还没弄清楚如何预编译insert,update或delete语句.
当然,当您在LINQ-to-SQL中插入,删除或更新时,必须使用对象模型.但显然在它生成查询的某个地方,预编译和存储在静态成员中会很好.
这可能吗?什么是LINQ性能,如更新,删除和插入时,它没有预编译?我可以看到它比选择快得多,因为他们在下面做的更简单,更少"动态"......
有一个很大的不同.Linq-To-SQL选择查询可以是大型复杂表达式树.这些可能需要一段时间"编译".在这种情况下,合并到一些可以针对SQL Server运行的T-SQL.因此,缓存操作的结果以便可以重复使用是有意义的.
但是,其他Delete,Update和Insert是简单的操作,不需要将表达式树转换为T-SQL(LINQ本身就是查询).很不幸的是,我们已经接受过训练,可以将SQL代码视为"查询"来执行这些其他操作,我们并不是真的要求任何信息.
这些操作仅由DataContext定义,而不是由LINQ定义,因此已经编译了执行这些函数的代码.