gpt4 book ai didi

c# - 仅当我指定 commandType 时才出现错误,无法使用 Dapper 和 c# 找到存储过程

转载 作者:行者123 更新时间:2023-11-30 15:53:04 25 4
gpt4 key购买 nike

我将 Dapper 与 C# 和 SQL Server 结合使用。我在 SQL Server 中有一个存储过程,可以将一个人插入到我的数据库中。问题是,当我在查询中指定它是一个存储过程时,我得到了

Could not find stored procedure

但不使用 commandType,一切正常。

例如:我有以下代码:

var result = connection.Execute("KBunnyGame_Players_InsertPlayer @Name, @Score, @FacebookId", player, commandType: CommandType.StoredProcedure);

而且我一直收到错误,但是在我更改为:

var result = connection.Execute("KBunnyGame_Players_InsertPlayer @Name, @Score, @FacebookId", player);

我没有再收到错误消息,播放器已插入到数据库中。我不知道这是否是预期的行为,这对我来说似乎很奇怪。有没有我可以遵循的文档?

编辑:

存储过程代码:

ALTER PROCEDURE [dbo].[KBunnyGame_Players_InsertPlayer] 
@Name NCHAR(20),
@Score INT,
@FacebookId NCHAR(50)
AS
BEGIN
SET NOCOUNT ON;

INSERT INTO KBunnyGame_Players (name, score, facebookId)
VALUES (@Name, @Score, @FacebookId);
END

最佳答案

使用 CommandType.StoredProcedure 时不要在命令文本中指定参数; 提供名称 - 参数已按名称传递。

如果需要过滤对象上的属性,使用投影:

var result = connection.Execute("KBunnyGame_Players_InsertPlayer",
new { player.Name, player.Score, player.FacebookId },
commandType: CommandType.StoredProcedure);

如果某些东西看起来足够接近于 EXEC,则 SQL Server 具有隐式 EXEC,这就是其他版本有效的原因。因此,如果您愿意:使用它。有或没有前导 EXEC

关于c# - 仅当我指定 commandType 时才出现错误,无法使用 Dapper 和 c# 找到存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53234319/

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