如何解决如何将我的数据库调用从 Web API 移动到类库?
[HttpGet("getLocation")]
public async Task<IActionResult> GetLocation([FromQuery] int id)
{
var ConnectionString = new ConnectionStringsOptions();
_Configuration.GetSection(ConnectionStringsOptions.ConnectionStrings).Bind(ConnectionString);
using (IDbConnection cnn = new sqlConnection(ConnectionString.ConnectionString))
{
var _id = new
{
ID = id
};
string sql = @"SELECT * FROM [dbo].[fLocationFilter](@ID)";
var _Location = await cnn.QueryAsync<Location>(sql,_id);
return Ok(_Location);
}
}
我想将该调用从 API 移动到我的类库,如下所示:
public async Task<IActionResult> GetLocation([FromQuery] int id)
{
var _location= Mylibrery.getCall(string connectionString,int id);
return Ok(_location);
}
我可以在不使用任务的情况下拨打电话吗?这会影响性能吗
我用于类库 .NET Core 5 和 ASP.NET Core 5。
更新:主要问题是如何获取从类库传递到 API 的 actionResult
解决方法
您的库中的代码可能如下所示:
public class Repository : IRepository
{
private readonly string _connectionString;
public Repository(IConfiguration configuration /* ILogger,etc */)
{
_connectionString = /* get connection string from configuration */
}
public async Task<Location> GetLocation(int id)
{
using (IDbConnection cnn = new SqlConnection(_connectionString))
{
var _id = new { ID = id };
string sql = @"SELECT * FROM [dbo].[fLocationFilter](@ID)";
var location = await cnn.QueryAsync<Location>(sql,_id);
return location;
}
}
}
它在控制器中的使用看起来像这样:
public class SomeController
{
private readonly IRepository _repository;
public SomeController(IRepository repository /* ILogger,etc */)
{
_repository = repository;
}
[HttpGet("getLocation")]
public async Task<IActionResult> GetLocation([FromQuery] int id)
{
var location = await _repository.GetLocation(id);
return Ok(location);
}
}
如果您想获得较高的服务整体性能,您绝对应该使用任务,或者更确切地说,使用异步代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。