gpt4 book ai didi

c# - ServiceStack 返回响应语法错误

转载 作者:行者123 更新时间:2023-11-30 21:44:04 26 4
gpt4 key购买 nike

我正在快速将 ServiceStack 升级到版本 4.5.4,但在尝试转换我的服务时遇到了问题。基本上我不能再将 sql 响应作为字符串返回。有谁知道正确的语法吗?

我已经设法更改为新语法,但是我无法找到更改以下行的正确方法:

return new PostAccountResponse() { message = string.Format("{0}", message.Value };

public object Post(Account.Model.Account request)
{
switch (request.Accounttype)
{
case "dview":
try
{
return dbFactory.Exec(dbCmd =>

{
dbCmd.CommandType = System.Data.CommandType.StoredProcedure;
dbCmd.CommandText = "stored procedure...";
dbCmd.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("@mobile", request.mobile));
MySql.Data.MySqlClient.MySqlParameter message = new MySql.Data.MySqlClient.MySqlParameter("@message", "");
message.Direction = System.Data.ParameterDirection.Output;
dbCmd.Parameters.Add(message);
gender.Direction = System.Data.ParameterDirection.Output;
r = dbCmd.ExecuteReader();
return new PostAccountResponse() { message = string.Format("{0}", message.Value };
});
}
catch (Exception ex)
{
//
}
break;
}
return new object();

}

有谁知道如何正确返回我的服务响应?太感谢了。我尝试了以下但也没有用:

    var rdr = dbCmd.ExecuteReader(CommandBehavior.CloseConnection);
var results = new List<Account.Model.PostAccountResponse>();
while (rdr.Read())
{
results.Add(new Account.Model.PostAccountResponse { message = string.Format("{0}", message.Value) });
}
return new PostAccountResponse { message = results };

更新 1

我正在尝试将服务升级到最新版本,但代码无法再使用这个新版本进行编译。这就是我所说的不起作用。编译器在 return new PostAccountResponse 行中抛出这些错误:

1.- 转换为 void 返回委托(delegate)的匿名函数无法返回值。

2.- 无法将 lambda 表达式转换为预期的委托(delegate)类型,因为 block 中的某些返回类型不能隐式转换为委托(delegate)返回类型。

3.- 无法将类型“Account.Model.PostAccountResponse”隐式转换为“System.Data.IDbCommand”。存在显式转换(是否缺少强制转换?)

4.- 无法将类型“Account.Model.PostAccountResponse”隐式转换为“System.Threading.Tasks.Task”

最佳答案

您应该在 using 语句中使用数据库连接,而不是使用 dbFactory.Exec():

using (var db = dbFactory.OpenDbConnection())
using (var dbCmd = db.CreateCommand())
{
dbCmd.CommandType = System.Data.CommandType.StoredProcedure;
dbCmd.CommandText = "stored procedure...";
dbCmd.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("@mobile", request.mobile));
MySql.Data.MySqlClient.MySqlParameter message = new MySql.Data.MySqlClient.MySqlParameter("@message", "");
message.Direction = System.Data.ParameterDirection.Output;
dbCmd.Parameters.Add(message);
gender.Direction = System.Data.ParameterDirection.Output;
r = dbCmd.ExecuteReader();
return new PostAccountResponse() { message = string.Format("{0}", message.Value };
}

您在此处尝试使用原始 ADO.NET 连接来调用 MySql 存储过程,但通常在您使用 OrmLite APIs 访问数据库时您可以直接使用 base.Db ADO.NET 连接,例如:

return Db.Select<Table>();

关于c# - ServiceStack 返回响应语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41052541/

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