gpt4 book ai didi

entity-framework - 值为 0 的 DbContext.Database.SqlQuery(query, parameters) 参数作为 "default"发送到数据库

转载 作者:行者123 更新时间:2023-12-04 07:22:47 24 4
gpt4 key购买 nike

我有这样的代码:

const string query = "select count(*) from query with parameters"
+ "@param1, @param2..."

(显然是伪代码)。当我像这样运行查询时:

ctx.Database.SqlQuery<int>(query,
new SqlParameter("param1", idAsociacion),
new SqlParameter("param2", 0));

我收到一个异常,指出我没有为 param2 提供值。

如果我使用 SQl Server Profiles,我会看到生成的查询如下所示:

exec sp_executesql N'The query', @param1=N'P', @param2=default

如果我尝试直接在 SQL Server 中运行它,我也会收到 param2 是必需的但未提供的错误(我不知道英语中的确切错误,因为我有一个本地化的 SQL Server)。

为什么 EF 将值 0 转换为 default

最佳答案

这个问题很愚蠢。

当我将鼠标指针放在 VS 中的此构造函数调用上时:

new SqlParameter("param2", 0)

我看到调用的 SqlParameter 重载不是这个:

SqlParameter(string, object) 

但是这个

SqlParameter(string, SqlDbType)

因此,简单的解决方案是调用将值转换为对象的构造函数,如下所示:

new SqlParameter("param2", (object)0)

因此调用了正确的重载,并且它按预期工作。

关于entity-framework - 值为 0 的 DbContext.Database.SqlQuery<T>(query, parameters) 参数作为 "default"发送到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30378263/

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