LINQ to SQL 将不会生成可控制查询

2023-12-19

我正在使用 LINQ To Sql(不是实体框架)、System.Data.Linq.DataContext 库,访问 SQL Server 2005 数据库并使用 .Net Framework 4。

表 dbo.Dogs 有一个类型为 CHAR(1) NULL 的“Active”列。如果我直接编写 SQL,查询将是:

SELECT * FROM dbo.Dogs where Active = 'A';

LINQ 查询是这样的:

from d in myDataContext.Dogs where d.Active == 'A' select d;

从上述 LINQ 查询生成的 SQL 将 Active 字段转换为 UNICODE。这意味着我无法使用 dbo.Dogs.Active 列上的索引,从而显着减慢查询速度:

SELECT [t0].Name, [t0].Active
FROM [dbo].[Dog] AS [t0]
WHERE UNICODE([t0].[Active]) = @p1

我可以做些什么来阻止 Linq to Sql 插入 UNICODE() 调用(从而失去在 dogs.Active 上索引的好处)?我尝试使用 EntityFunctions.AsNonUnicode() 方法包装参数,但这没有什么好处(它在生成的 sql 中将 CONVERT() 插入到 NVARCHAR 而不是 UNICODE() ),例如:

...where d.Active.ToString() == EntityFunctions.AsNonUnicode('A'.ToString());

Linq 旨在使编写查询变得更容易,但并不总是生成最佳 SQL。有时,当需要高性能时,直接针对数据库编写原始 SQL 会更有效,Linq datacontext 支持将 SQL 结果映射到实体,就像 linq 一样。 对于你的情况我建议写:

IEnumerable<Dog> results = db.ExecuteQuery<Dog>(
                           "SELECT * FROM dbo.Dogs where Active = {0}", 
                           'A');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LINQ to SQL 将不会生成可控制查询 的相关文章

随机推荐

  • 当 React 已经渲染时无法刷新更新

    我试图在 API 返回错误时显示警报 对于警报窗口 我使用 sweetalert2 在我的渲染方法中 我正在检查错误消息是否包含内容 如果它包含错误消息 我想向用户显示警报 当我提交表单时 我会进行 API 调用 如果返回错误 reduce
  • 在 Linq 中返回单个列表属性 List

    我在这里遇到问题 我有一个列表 this Ddown 有 3 个属性 我想编写一个 Linq 查询来返回其中一个属性 假设我有属性 a b c 我想返回列表 c 我如何在 linq 中做到这一点 var listOfC this Ddown
  • 如何向直方图添加颜色条?

    I have a histogram like this just like a normal histogram 在我的情况下 总是有 20 个条形 x 轴从 0 到 1 并且条形的颜色是根据 x 轴上的值定义的 我想要的是添加一个色谱
  • TeamCity GitHub 私钥访问被拒绝

    有谁知道使用 TeamCity 与 github 和 ssh 私钥的教程 我尝试设置 git hub 进行连接 但要么出现身份验证错误 要么访问被拒绝 我在 Windows 2003 上运行 TeamCity 我将构建代理作为自定义帐户运行
  • 在 SPSS 宏中循环遍历并行列表/数组

    我想编写一个SPSS宏来执行三个操作 生成自定义表 清洁输出窗口 导出表 如您所知 SPSS 宏工具允许使用两种类型的循环 数字 如 do i x to y 和 list for every 像 do i in 1 我的目标是创建一个带有如
  • 是否可以在没有 REST 请求的情况下创建 Kafka 连接器?

    是否可以在没有 REST 请求的情况下创建 Kafka 连接器 我已经通过 java 代码启动了我的工作程序 分布式 并希望我的连接器也随之启动 我不想使用 REST 调用 不是来自浏览器 也不是来自代码 来创建我的连接器 我只想要一个简单
  • codeigniter 数据库移动到另一个表

    如何解决这个 codeigniter 问题 我有一个数据库表 Mysql 我需要使用 Php Codeigniter 框架将其所有字段内容移动到另一个表 将数据从一个表插入到另一个可在我的模型和控制器中使用的表的语法是什么 我尝试使用这些
  • Angular 2 核心模块和功能模块的区别

    我不明白之间的区别core https angular io docs ts latest guide ngmodule html core module and feature https angular io docs ts lates
  • 标签“文件系统”出现问题

    出于娱乐原因 我编写了一个 PHP 类 它用标签对文件进行分类 而不是以分层方式进行分类 标签以 tag1 tag2 tagN MD5 EXTENSION 的形式存储在文件名本身中 因此我坚持使用FS OS 施加的字符限制 255 这是课程
  • WSL-2:哪些端口会自动转发?

    我已经研究 WSL 2 一段时间了 但并不完全了解主机和 WSL 2 区域之间的流量是如何路由的 在某些来源中 WSL 2 使用的所有端口似乎都会自动可供主机使用 比如在微软的这个教程 https learn microsoft com e
  • 在 Symfony 中防止 Doctrine 的查询缓存

    在我的 Symfony Doctrine 应用程序中 我有一个按 RANDOM 排序的查询 我多次调用相同的方法 但看起来查询的结果正在被缓存 这是我的相关代码 query table gt createQuery p gt select
  • 如何在 Chrome 应用程序中包含数据文件以供本机客户端模块读取

    如果我有一个 Chrome 打包应用程序 其中还包含 PNaCl NaCl 模块 是否有办法在打包应用程序中包含一些数据文件 然后 NaCl 模块将读入这些数据文件 我不需要编写任何文件 只需包含本机模块需要使用的一些数据文件即可 Java
  • Jruby 中的 Java 数组

    我有一个 Java 库 我正在从中提取一些数据 它输出一个 3D 数组 但是我无法用它做任何事情 D 5615a6e0 是我得到的回应 我尝试过映射它 arr arr map arr arr to a 但我什么也没得到 解析这个java数组
  • Android 稍后通知用户

    我想在android中创建一个应用程序 其中用户选择未来的某一天 然后 当那一天到来时 他会收到通知 我知道这可以通过日历或注释来完成 但这并不对我来说很重要 我有两个与前一个问题相关的问题 A 我该如何执行通知 我在其他地方读到过有关向用
  • 停止/取消执行 FFmpeg 命令

    Android 有可用的 FFmpeg Static 二进制 我们可以在 FFmpeg 执行某些操作时停止 取消某些 FFmpeg 执行 命令 https github com WritingMinds ffmpeg android jav
  • 为什么 jQuery 事件在就绪函数之外时不触发,即使文档已就绪?

    尽管 DOM 似乎已加载 控制台中显示 就绪 为什么在这种情况下单击事件未触发 document ready function console log ready p click function alert You clicked on
  • 如何在页面加载时逐个淡入图像?

    我创建了以下代码 在页面加载时向页面上的所有 div 添加 opacity 1 这样做时 所有图像都会在页面加载时看到 但我希望每个图像都慢慢淡入 并且在一个图像完全加载 可见后 我希望第二个图像加载完全相同 然后加载第三个图像 我怎样才能
  • Java中可以更改内部类的外部类实例吗?

    在Java中 每当创建内部类实例时 它都会与外部类的实例相关联 出于好奇 是否可以将内部类与外部类的另一个实例相关联 是的 这是可能的 尽管这对我来说听起来是一个非常糟糕的主意 这个想法是设置否则final使用反射指向外部实例的指针 不保证
  • 绘图不显示

    我有一个相当简单的 xml 文件 其中有一个图像按钮 该图像在图形布局 xml 设计器上显示良好 当我运行开发构建时显示良好 但一旦我创建签名的 apk 文件并运行它 图像就不再显示 这只是一个空按钮 我想不出原因 有什么想法吗 xml 文
  • LINQ to SQL 将不会生成可控制查询

    我正在使用 LINQ To Sql 不是实体框架 System Data Linq DataContext 库 访问 SQL Server 2005 数据库并使用 Net Framework 4 表 dbo Dogs 有一个类型为 CHAR