Najlepsze praktyki wdrażania jednostki pracy i wzorca repozytorium przy użyciu ServiceStack.ORMLite

Załóżmy, że istnieją dwa interfejsy repozytorium:

interface IFooRepository
{
    void Delete(int id);
}

interface IBarRepository
{
    void Delete(int id);
}

I interfejs IUnitOfWork, taki jak:

interface IUnitOfWork : IDisposable
{
    void Commit();
    void Rollback();
}

jakie są najlepsze praktyki implementowania tych interfejsów za pomocą ServiceStack.ORMLite, aby użytkownik mógł z nich korzystać

MyFooRepository.Delete(4);
// if an Exception throws here, Bar won't be deleted
MyBarRepository.Delete(7);

Lub

using (var uow = CreateUnitOfWork())
{
    MyFooRepository.Delete(4);
    MyBarRepository.Delete(7);
    uow.Commit();  //now they are in an transaction
}

questionAnswers(1)

yourAnswerToTheQuestion