- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
不幸的是,我们的数据库可以追溯到 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/
我按照问题答案的规定使用了 queryAsync(),它确实有效,但它向我的查询结果添加了大量额外的元数据,否则这是一个简单的查询。 这是我用来处理/执行查询并记录结果的内容: var retriev
我在 C# 中有这个任务,我想使用 dapper 在 MySql 中调用一个存储过程。 public async Task> GetTable() { using (MySql
我正在尝试测试我的存储库方法,它使用 QueryAsync() 并且它在一个事务中。所以我在模拟 IDbConnection 和 IDbTransaction。但是当我运行测试用例时它给出了一个错误
不幸的是,我们的数据库可以追溯到 90 年代。它的遗产是如此强大,以至于我们仍在使用 SP 来完成大部分的 CRUD 操作。然而,Dapper 似乎很适合我们,我们才刚刚开始使用它。 但是,我有点担心
为什么我不能在 Query 上正常使用 .select 时在 Query 上使用它? 例如,这里 .select 对我大喊大叫,告诉我它无法解析符号“select”: var result = awa
我正在使用 dapper 和 C#7 ValueTuples(已安装的 nuget)执行以下查询: await connection.QueryAsync( $@"SE
我正在使用异步等待构建nodejs api。所以我的 Controller 每个函数都是异步的,它通过模型接收 promise 。对于查询,我使用了sequelize包来与数据库交互。为了使用sequ
在这里使用 .net core api (c#) 和 dynamodb。 我的 dbmanager 类为: public class DbManager : DynamoDBContext, IDyn
使用此代码(有或没有“.ToList()”): public async Task> SelectDistinctGroupNames() { var db = new SQLiteAsync
我正在更新我的项目以使用 Azure.Data.Tables 12.6.1,但我不知道在哪里指定 Take 值来限制从查询返回的实体数。 换句话说,我想做这样的事情: var limit = 150;
我正在使用 Azure.Data.Tables 包和 TableClient.QueryAsync() 方法来获取查询结果。我希望结果将其用于分页。我在 https://learn.microsoft
我正在使用 Azure.Data.Tables 包和 TableClient.QueryAsync() 方法来获取查询结果。我希望结果将其用于分页。我在 https://learn.microsoft
我尝试使用以下代码,但它不起作用。 public void deleteRow(int index) { conn.QueryAsync("D
未处理的拒绝错误:握手不活动超时。我运行应用程序并在连接到数据库期间收到错误以防获取数据。我删除了 node_modules 文件夹。通过 nvm 将 Node 版本从 4.4.7 更改为 6.10.
我有一个执行检查并返回一行或非零返回值的存储过程: CREATE PROCEDURE dbo.ConditionalGet @ID INT AS BEGIN -- this is a
首先,我认为第一次只是一个条件,可以更清楚地看到这种阻塞。对于下一次,它仍会以某种方式稍微阻塞 UI,但不像不使用异步时那样明显。 我可以这么说,因为我可以看出使用 QueryAsync 之间的区别和
下面给出的是我用来从 Dynamodb 表中检索详细信息的方法。但是当我调用这个方法时,它最终抛出了一个异常“无法找到关键属性任命 ID 的属性”。这个特定表的主键是appointmentId,但我已
为什么在此方法上调用 .Result 会导致 TaskCanceledException: public Task> GetAsync() { using (var conn = new Sq
我正在运行以下查询,其中包含 Case 和 Account 之间的子 => 父关系 - 并在 SELECT 中包含 Account.Name: string query = "SELECT Case.
在使用 dapper 的 QueryAsync 方法时,使用 connection.OpenAsync() 和 connection.Open() 有什么区别。 异步: public async Ta
我是一名优秀的程序员,十分优秀!