我想将我的所有db存储过程转换为 linq到sql表达式,这项工作是否有任何限制?你必须注意到我的数据库中有一些复杂的查询. Linq to SQL不支持SQL Server的几个功能:
>批量更新(除非您使用非标准扩展);
>表值参数;> CLR类型,包括空间类型和hierarchyid;> DML语句(我特别考虑表变量和临时表);> OUTPUT INTO条款;> MERGE声明;>递归公用表表达式,即嵌套集上的分层查询;>使用SET ROWCOUNT优化分页查询(ROW_NUMBER不是最有效的);>某些窗口函数,如DENSE_RANK和NTILE;>游标 – 虽然显然应该避免这些游标,但有时你真的需要它们;>使用ROLLUP,CUBE,COMPUTE等的分析查询>统计汇总,如STDEV,VAR等.> PIVOT和UNPIVOT查询;> XML列和集成的XPath;> …依此类推……有了这些东西,你可以在技术上编写自己的扩展方法,解析表达式树并实际生成正确的SQL,但这不适用于上述所有,即使它是一个可行的选项,它通常只是更容易编写SQL并调用命令或存储过程.有一个原因,DataContext为您提供ExecuteCommand,ExecuteQuery和ExecuteMethodCall方法.
正如我在过去所说的那样,像Linq to SQL这样的ORM是很好的工具,但它们不是银子弹.我发现对于规模较大,数据库较多的项目,L2S通常可以处理大约95%的任务,但对于其他5%,你需要编写UDF或存储过程,有时甚至完全绕过DataContext(对象跟踪会不适合服务器触发器).
对于较小/较简单的项目,很有可能您可以在Linq to SQL中执行所有操作.你是否应该完全是一个不同的问题,而且我不打算在这里回答.
查看更多关于c# – 我们可以将所有SQL脚本转换为Linq-to-SQL表达式还是有任何限制?的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did69345