gpt4 book ai didi

asp.net-core - 在 EF Core 3.0 与 2.2 中执行存储过程

转载 作者:行者123 更新时间:2023-12-02 02:52:21 25 4
gpt4 key购买 nike

我正在尝试更新我的代码以适应 EF Core 3.0 中的更改,特别是 ExecuteSqlCommand 的弃用。

以下代码在 2.2 中工作,但如上所述,我需要摆脱 ExecuteSqlCommand:

SqlParameter srcid = new SqlParameter("@srcCharacterId", participantApplication.CharacterId);
SqlParameter newid = new SqlParameter("@newCharacterId", newCharacterId);
SqlParameter pResult = new SqlParameter
{
ParameterName = "@pResult",
SqlDbType = System.Data.SqlDbType.Bit,
Direction = System.Data.ParameterDirection.Output
};

_db.Database.ExecuteSqlCommand("pCharacterCopy @srcCharacterId, @newCharacterId, @pResult OUTPUT", srcid, newid, pResult);

我尝试更改对 ExecuteSqlRaw 的调用(使其他所有内容保持不变),但是尽管它可以编译,但在运行时会引发以下异常:

The SqlParameterCollection only accepts non-null SqlParameter type objects, not SqlParameter objects

我已经检查了调试器,没有一个 SqlParameter 为空。我怀疑我对 ExecuteSqlRaw 的调用格式不正确,但除了将调用集成到我不需要做的 Linq 查询之外,我找不到任何示例。我只想触发对存储过程的调用,并在完成后查看输出参数。

最佳答案

这很可能是由于 switch to Microsoft.Data.SqlClient .

删除对 System.Data.SqlClient 程序集的引用并替换命名空间。

使用 System.Data.SqlClient; => 使用 Microsoft.Data.SqlClient;

关于asp.net-core - 在 EF Core 3.0 与 2.2 中执行存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59655923/

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