加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 我们可以将所有SQL脚本转换为Linq-to-SQL表达式还是有任何

发布时间:2020-12-16 00:13:06 所属栏目:百科 来源:网络整理
导读:我想将我的所有db存储过程转换为 linq到sql表达式,这项工作是否有任何限制?你必须注意到我的数据库中有一些复杂的查询. 解决方法 Linq to SQL不支持SQL Server的几个功能: 批量更新(除非您使用非标准扩展); 表值参数; CLR类型,包括空间类型和hierarchyid;
我想将我的所有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中执行所有操作.你是否应该完全是一个不同的问题,而且我不打算在这里回答.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读