gpt4 book ai didi

sql - 强制 LINQ to SQL 或 ENTITIES 发出 BETWEEN 运算符

转载 作者:行者123 更新时间:2023-12-04 21:22:18 26 4
gpt4 key购买 nike

在处理作为聚集索引的 SQL Server 和日期时,为了正确访问索引,查询必须采用以下形式:

select fields
from dbo.MyTable
where myDate between @begDate and @endDate

between 运算符是触发群集查找的原因。如何告诉 LINQ 发出 between 运算符而不是 >= this 和 <= that?

最佳答案

不幸的是,Linq 没有 between 运算符或等效运算符。实现这一目标的最佳(也可能)唯一方法是在 sql 中。

如果您想编写复杂或优化的查询,最好使用 sql 而不是 linq。这样做的主要优点是:

  • 代码可以在管理工作室进行全面测试,无需用第二语言翻译和调试
  • 出于遗留目的,通常最好将 sql 用于数据库访问代码,因为这在数据库专家中更为广为人知。 LINQ 是 DBA 的诅咒,他们必须管理/支持他人编写的代码。

  • 我同意 Gerge Mauer 的建议,即使用存储过程或 ADO。

    这可能仍然会给您带来参数嗅探的问题,在这种情况下,您可能必须使用诸如 OPTIMIZE FOR/RECOMPILE 之类的查询提示或局部变量来解决此问题,如本文所示:

    http://blogs.msdn.com/b/turgays/archive/2013/09/10/parameter-sniffing-problem-and-workarounds.aspx

    关于sql - 强制 LINQ to SQL 或 ENTITIES 发出 BETWEEN 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26809270/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com