gpt4 book ai didi

c# - 使用 Dapper QueryAsync 返回单个对象

转载 作者:可可西里 更新时间:2023-11-01 09:04:05 28 4
gpt4 key购买 nike

不幸的是,我们的数据库可以追溯到 90 年代。它的遗产是如此强大,以至于我们仍在使用 SP 来完成大部分的 CRUD 操作。然而,Dapper 似乎很适合我们,我们才刚刚开始使用它。

但是,我有点担心如何处理单个数据行。在这种情况下,我使用 QueryAsync 来调用传递 ID 的 SP。如您所见,对象正在异步调用之外返回(*)。

我会遇到麻烦吗?如果是这样,有谁知道如何处理它?我需要改用 QuerySync 吗?

public class SchemePolicyRepository : ISchemePolicyRepository
{
private readonly SqlConnection sql;

protected SchemePolicyRepository(SqlConnection connection)
{
sql = connection;
}
...
public async Task<SchemePolicy> GetById(string id)
{
var schemePolicy = await sql.QueryAsync<SchemePolicy>("risk.iE_GetSchemePolicyById",
new { Id = id },
commandType: CommandType.StoredProcedure);
return schemePolicy != null ? schemePolicy.FirstOrDefault() : null;
}
...
}

(*)FirstOfDefault() 返回的 SchemePolicy 对象不是异步方法。

最佳答案

Dapper 支持 QueryFirstOrDefaultAsync()现在,所以你可以像这样编写代码,

public async Task<SchemePolicy> GetById(string id)
{
return await sql.QueryFirstOrDefaultAsync<SchemePolicy>("risk.iE_GetSchemePolicyById",
new { Id = id },
commandType: CommandType.StoredProcedure);
}

关于c# - 使用 Dapper QueryAsync 返回单个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31242186/

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