Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public abstract class BaseService<TUnitOfWork> : IService where TUnitOfWork : IUnitOfWork, new()
- {
- protected readonly IUnitOfWork _uow;
- protected readonly ILogger _log;
- public BaseService()
- {
- _uow = new TUnitOfWork();
- _log = new Logger(GetType().FullName);
- //...
- }
- // Other base protected & private methods
- }
- public class FooService : BaseService, IFooService
- {
- public void CreateFoo(FooDTO foo)
- {
- FooEntity fooEntity = Mapper.Map<FooDTO, FooEntity>(foo);
- // Insert Foo entity
- _uow.FooRepository.Insert(fooEntity);
- _uow.Commit();
- }
- }
- public class BarService : BaseService, IBarService
- {
- public void CreateBar(BarDTO bar)
- {
- // Insert Bar entity
- BarEntity barEntity = Mapper.Map<BarDTO, BarEntity>(bar);
- _uow.BarRepository.Insert(barEntity);
- // После чего необходимо вызвать FooService.CreateFoo(fooDTO)
- IFooService fooService = ???
- fooService.CreateFoo(new FooDTO()); // только для примера создается пустой FooDTO-объект
- // При этом действие должно выполниться одной транзакцией
- // т.е. полчается, что _uow.Commit() в методе FooService.CreateFoo не должен сработать,
- // а должен сработать _uow.Commit для всех сущностей (и Bar и Foo) тот что ниже??
- _uow.Commit();
- }
- }
- public interface IExampleUnitOfWork
- {
- IRepository<Foo> FooRepository { get; }
- IBarRepository BarRepository { get; }
- }
- public class ExampleUnitOfWork : BaseUnitOfWork<ExampleContext>, IExampleUnitOfWork
- {
- public IRepository<Foo> FooRepository { get { return GetGenericRepository<Foo>(); } }
- public IBarRepository BarRepository { get { return GetCustomRepository<BarRepository>(); } }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement