c# - Linq 查询 FromSql 在哪里传递字符串值
问题描述
有一个 SQL 表示例列 Id-Pk-int, Name-varchar(250), ...
使用 EF 核心
当我执行
var data= (from c in _db.Table.FromSql($"select * from Emp where id=1")
select c).FirstOrDefault();
成功返回
但是当我使用 where 子句名称(字符串)执行时
var data = (from c in _db.Table.FromSql($"select * from Emp where Name=Mike")
select c).FirstOrDefault();
我得到一个异常,System.Data.SqlClient.SqlException:'无效的列名'Mike'。
我测试了我是否更改了数据库列中的数据: Name to 123 (number) it works but failed when value is string
解决方案
我认为问题是因为您忘记使用
'
符号而发生的。因为异常说没有名为 Mike 的列。正如我从代码中看到的那样,列名应该是“名称”。检查
Name
列是否为VARCHAR
. 如果该列是VARCHAR
您需要使用 ' 符号。如果没有,您可以使用 likeWHERE ID=1
使用那个;
var data = (from c in _db.Table.FromSql($"select * from Emp where Name='Mike'")
select c).FirstOrDefault();
编辑2:我看到你说Id-int,Name-varchar。你能用我写的代码吗?谢谢。
推荐阅读
- active-directory - 多个域/一个带有 SSSD 和 REALMD 的 Forest RHEL7 - 无法登录到另一个域
- mongodb - 连接mongodb失败
- reactjs - 可以使用 react-testing-library 在测试中调用作为组件属性传递的函数吗
- php - 将课程添加到列表中的当前帖子标题
- javascript - 无法安装 jspdf 1.5.3
- python-3.x - 使用 python 将值存储到 cassandra
- android - 如何修复“无法确定应用程序 ID:com.android.tools.idea.run.ApkProvisionException:变体的主要工件没有输出:”
- objective-c - FMDB MODIFY 查询无法在现有 SQLite 数据库中设置约束
- html - 选择标签占位符
- linux - 我可以(IGMP)加入两个 NIC 上的流并在 Linux 中回答(IGMP)两个 NIC 上的查询吗?