Giả sử rằng có hai giao diện kho:Thực hành tốt nhất thực hiện đơn vị của công việc và mô hình kho sử dụng ServiceStack.ORMLite
interface IFooRepository
{
void Delete(int id);
}
interface IBarRepository
{
void Delete(int id);
}
Và một giao diện IUnitOfWork như:
interface IUnitOfWork : IDisposable
{
void Commit();
void Rollback();
}
thực hiện những điều tốt nhất là gì triển khai các giao diện đó bằng ServiceStack.ORMLite để người dùng có thể sử dụng chúng như
MyFooRepository.Delete(4);
// if an Exception throws here, Bar won't be deleted
MyBarRepository.Delete(7);
Hoặc
using (var uow = CreateUnitOfWork())
{
MyFooRepository.Delete(4);
MyBarRepository.Delete(7);
uow.Commit(); //now they are in an transaction
}
Tôi khuyên bạn nên tránh sử dụng UOW càng nhiều có thể. Đi xung quanh một giao dịch mở như vậy thường là một thiết kế rất xấu. (Trong các bản sửa đổi trước đó, tôi đã phạm tội với những thứ này) –