Лучшие практики реализации модуля работы и шаблона хранилища с использованием ServiceStack.ORMLite
Предположим, что есть два интерфейса репозитория:
interface IFooRepository
{
void Delete(int id);
}
interface IBarRepository
{
void Delete(int id);
}
И интерфейс IUnitOfWork, такой как:
interface IUnitOfWork : IDisposable
{
void Commit();
void Rollback();
}
Каковы лучшие практики реализации этих интерфейсов с использованием ServiceStack.ORMLite, чтобы пользователь мог использовать их как
MyFooRepository.Delete(4);
// if an Exception throws here, Bar won't be deleted
MyBarRepository.Delete(7);
Или же
using (var uow = CreateUnitOfWork())
{
MyFooRepository.Delete(4);
MyBarRepository.Delete(7);
uow.Commit(); //now they are in an transaction
}