https://github.com/altbodhi/DapperClient решил попробовать еще больше упростить работу с СУБД, путем централизации доступа к подключению через обретку-клиента и использования паттерна QueryObject.
DapperClient реализует лишь часть методов, т.к. использование, например, метода позволяющего за один проход загрузить все записи. на мой взгляд, лишь усложняет реализацию.
Идея в том, чтобы можно было запустить транзакцию, обработать данные и завершить транзакцию. Ну использовать управление запросами при помощи QueryObject.
public interface IQueryObject
{
string Sql { get; }
object Params { get; }
}
// собственно говоря, вся суть идеи:
public IEnumerable<T> Query<T>(IQueryObject queryObject)
{
return connection.Query<T>(queryObject.Sql, queryObject.Params, GetWorkingTransaction());
}
// GetWorkingTransaction() возвращает транзакцию, если она была запущена методом StartTransaction()
// иначе используется неявная транзакция(одна комманда - одна транзакция, в случае успеха - коммит).
// вот так создает запрос к бд, никакого sql, только объекты:
public List<Item> Items() => client.Query<Item>(itemQObjects.All()).ToList();
DapperClient реализует лишь часть методов, т.к. использование, например, метода позволяющего за один проход загрузить все записи. на мой взгляд, лишь усложняет реализацию.
Идея в том, чтобы можно было запустить транзакцию, обработать данные и завершить транзакцию. Ну использовать управление запросами при помощи QueryObject.
public interface IQueryObject
{
string Sql { get; }
object Params { get; }
}
// собственно говоря, вся суть идеи:
public IEnumerable<T> Query<T>(IQueryObject queryObject)
{
return connection.Query<T>(queryObject.Sql, queryObject.Params, GetWorkingTransaction());
}
// GetWorkingTransaction() возвращает транзакцию, если она была запущена методом StartTransaction()
// иначе используется неявная транзакция(одна комманда - одна транзакция, в случае успеха - коммит).
// вот так создает запрос к бд, никакого sql, только объекты:
public List<Item> Items() => client.Query<Item>(itemQObjects.All()).ToList();
Комментарии
Отправить комментарий