首页 > 解决方案 > 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

标签: c#entity-frameworklinq

解决方案


  1. 我认为问题是因为您忘记使用'符号而发生的。因为异常说没有名为 Mike 的列。正如我从代码中看到的那样,列名应该是“名称”。

  2. 检查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。你能用我写的代码吗?谢谢。


推荐阅读