【发布时间】:2019-01-22 03:22:36
【问题描述】:
我在一个带有 SQL Server 数据库的 ASP.Net Core 2.1 CRUD 应用程序中使用 Dapper ORM。对于我正在开发的新表单,我想在调用屏幕时一次性检索所有参考数据(以填充SELECT 字段选项)。这涉及到一系列存储过程调用,我希望异步执行这些调用以获得最佳性能。
This Dapper tutorial 建议我应该考虑使用QueryMultipleAsync,但我找不到它与存储过程一起使用的示例,只有硬编码的 SQL 语句。
我的 C# 代码目前如下所示:
public async Task<ContactReferenceData> Get()
{
ContactReferenceData refData = new ContactReferenceData();
try
{
using (IDbConnection dbConnection = _connection)
{
dbConnection.Open();
var countryData = await dbConnection.QueryAsync<Country>(sql: "usp_GetCountries", commandType: CommandType.StoredProcedure);
refData.CountryDetails = countryData.AsList();
var companyData = await dbConnection.QueryAsync<Company>(sql: "usp_GetCompanies", commandType: CommandType.StoredProcedure);
refData.CompanyDetails = companyData.AsList();
var groupData = await dbConnection.QueryAsync<Group>(sql: "usp_GetGroups", commandType: CommandType.StoredProcedure);
refData.GroupDetails = groupData.AsList();
var groupPositionData = await dbConnection.QueryAsync<GroupPosition>(sql: "usp_GetGroupPositions", commandType: CommandType.StoredProcedure);
refData.GroupPositionDetails = groupPositionData.AsList();
}
return refData;
}
catch (Exception ex)
{
_logger.LogError(ex.ToString());
throw;
}
}
这在我的测试环境中运行良好,但我不确定它是否是执行异步查询的正确方法。特别是,我有以下担忧:
它是否足够强大以在实时操作中受到信任?
以目前的形式,它是最大限度地发挥异步操作的好处(如果有的话),还是应该使用
QueryMultipleAsync来正确实现这一点?
【问题讨论】:
-
你尝试过这样的事情吗?
标签: asp.net asynchronous stored-procedures dapper