вы можете создать делегата для ваших методов вызова db, который даст вам асинхронную функциональность.Конечно, я понятия не имею, какие последствия это может иметь.Вам нужно будет проверить его.
Используя SqlConnection или OracleConnection в качестве базового базового типа, вы можете создать универсальный репозиторий (добавить, получить, удалить и т. Д.)
public Row GetByID (int id) {}
делегат void GetByIDDelegate (int id);
var dbCall = new GetByIDDelegate (GetByID);
dbCall.BeginAsync (...);
Это только с моей головы.