Rất tiếc, DB của chúng tôi có niên đại từ những năm 90. Di sản của nó là rất mạnh mẽ mà chúng tôi vẫn đang sử dụng SP để làm hầu hết các hoạt động CRUD. Tuy nhiên, có vẻ như Dapper rất hợp với nhau và chúng tôi mới bắt đầu chơi.Sử dụng Dapper QueryAsync để trả về một đối tượng đơn
Tuy nhiên, tôi hơi lo lắng về cách xử lý một hàng dữ liệu. Trong trường hợp này, tôi đang sử dụng QueryAsync để gọi SP đi qua một ID. Như bạn có thể thấy, đối tượng đang quay lại bên ngoài cuộc gọi không đồng bộ (*).
Tôi có gặp rắc rối không? Nếu vậy, có ai biết cách xử lý nó không? Tôi có cần sử dụng QuerySync không?
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;
}
...
}
(*) Đối tượng SchemePolicy do FirstOfDefault() trả về không phải là phương pháp không đồng bộ.
* Như bạn có thể thấy, các đối tượng là không quay trở lại cuộc gọi không đồng bộ. * Điều đó có nghĩa là gì? Bạn có nghĩa là truy vấn của bạn không hoạt động? –
Không có gì sai với các thủ tục được lưu trữ, chúng là SQL giống như các ORM nặng, chậm phát sinh. – Crowcoder
Cảm ơn @YuvalItzchakov, tôi đã cập nhật bài đăng –