Лучшие практики реализации модуля работы и шаблона хранилища с использованием 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
}

Ответы на вопрос(1)

Ваш ответ на вопрос