我有以下方法(为简单起见缩写):
public Task CreateAsync(TUser user)
{
using (var connection = new SqlConnection(_connection))
{
return Task.FromResult(connection.Execute("CreateUser", param, commandType: CommandType.StoredProcedure));
}
}
我想加入一个try-catch block
,这样我就可以记录任何潜在的Sql错误。
public Task CreateAsync(TUser user)
{
var result = ???; // what is the return type here?
try
{
result = FromResult(connection.Execute("CreateUser", param, commandType: CommandType.StoredProcedure));
}
catch(SqlException sqlEx)
{
// log error here
}
return result;
}
我想我不确定Task
的返回类型是什么?
答案 0 :(得分:5)
您应该使用异步方法而不是Task.FromResult
。
我假设您正在使用Dapper或扩展SqlConnection
的某种框架。
我不知道存储过程返回什么。如果返回值无关紧要,则代码应如下所示。
public async Task CreateAsync(TUser user)
{
try
{
await connection.ExecuteAsync("CreateUser", param, commandType: CommandType.StoredProcedure);
}
catch(SqlException sqlEx)
{
// log error here
}
}
如果那么重要(例如bool):
public async Task<bool> CreateAsync(TUser user)
{
bool result;
try
{
await connection.ExecuteAsync("CreateUser", param, commandType: CommandType.StoredProcedure);
result = true;
}
catch(SqlException sqlEx)
{
// log error here
result = false;
}
return result;
}