假設有兩個倉庫接口實現工作和存儲庫模式的單位的做法:建議使用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
}
我會建議避免使用的UOW儘可能多可能。通過這樣的開放式交易通常是一個非常糟糕的設計。 (在以前的版本中,我自己是犯這個東西的) – 2014-09-08 15:27:00