You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用EF Core执行SQL查询获取数据库排序规则时出现‘Invalid column name : 'Value'’错误的原因排查

EF Core执行SQL查询获取数据库排序规则时出现‘Invalid column name : 'Value'’错误的原因排查

嗨,我来帮你拆解下这个问题的根源和解决办法~

你遇到的这个错误,本质是EF Core对简单类型(比如string、int这类)的SQL查询结果映射规则导致的,和SQL Server本身没什么关系。

在EF Core 3.x及之后的版本(包括你用的9.0.7),当你使用SqlQuery<T>且T是简单值类型/字符串时,EF Core默认期望查询返回的列名为Value,它会自动尝试把查询结果里名为Value的列值映射到你指定的string类型上。但你的SQL语句返回的列名是collation_name,EF Core找不到名为Value的列,自然就抛出了“无效列名Value”的错误。

知道原因后,解决起来就很简单了,只需要修改你的SQL语句,把返回的列名重命名为Value就行:

var collation = dbContext.Database.SqlQuery<string>($"SELECT collation_name AS [Value] FROM sys.databases WHERE name = DB_NAME()").FirstOrDefault();

这样EF Core就能正确识别列名,完成映射并返回排序规则字符串了。

你也可以换一种思路,比如定义一个简单的DTO类来接收结果,比如:

public class CollationResult
{
    public string CollationName { get; set; }
}

然后用SqlQuery<CollationResult>执行原SQL,再从对象里取CollationName属性,不过这种方法就不如直接重命名列名来得直接啦。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 03:08:22