gpt4 book ai didi

c# - 将参数传递给存储过程(.net sdk)时出现参数异常

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

我已在我的 DocumentDb 帐户的集合中创建了此存储过程。

https://github.com/Azure/azure-documentdb-js-server/blob/a7a2db8c4abc6ce61d40e08b66358f03fd89f896/samples/stored-procedures/update.js

我在使用 .NET SDK 执行此操作时遇到问题,这是我的代码。

dynamic[] procParams = new dynamic[] { "myid", "{ $set: { status : 'Draft' } }" };

return await _client.ExecuteStoredProcedureAsync<Listing>(UriFactory.CreateStoredProcedureUri("dbName", "collection", "update"), procParams);

SDK 抛出 ArgumentException:

“如果对象不是文档或附件,则无法序列化对象”

好像我只能传递文档或附件,这似乎不对?我看到这篇博文,看起来这个人也在做同样的事情,但没有任何问题。

那么如何将基本参数传递给存储过程(例如字符串)?

最佳答案

澄清一下 - 上面的异常似乎是指反序列化存储过程对 Listing 的响应的问题。类(而不是在执行存储过程之前序列化输入参数)。

您可以通过检查存储过程作为字符串的响应来验证这是否正确:

var sprocResponse = client.ExecuteStoredProcedureAsync<string>(UriFactory.CreateStoredProcedureUri("dbName", "collection", "update"), procParams).Result.Response.ToString();

如果您能够以字符串形式检索更新后的文档响应;这意味着存储过程已成功执行,并且应该确认问题在于将存储过程响应反序列化到 Listing 中。类。

这里的一个常见错误是 POCO 扩展 Document 类(而不是 Resource 类: Microsoft.Azure.Documents.Resource )。请确认Listing不扩展Document ,并且存储过程的响应可以反序列化为 Listing类。

关于c# - 将参数传递给存储过程(.net sdk)时出现参数异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40498008/

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