| 1234567891011121314151617181920212223242526272829303132333435363738 |
- using Quadarax.Foundation.Core.Data.Interface.Domain;
- using Quadarax.Foundation.Core.Object;
- namespace Quadarax.Foundation.Core.Data.Domain
- {
- public class UnitOfWork<TDomainContext> : DisposableObject, IUnitOfWork<TDomainContext> where TDomainContext : IDomain
- {
- public TDomainContext Context { get; protected set; }
- public UnitOfWork(IDomainContextResolver<TDomainContext> context)
- {
- Context = context.GetCurrent<TDomainContext>();
- }
- public UnitOfWork(TDomainContext context)
- {
- Context = context;
- }
- public void Commit()
- {
- Context.Commit();
- }
- public IUnitOfWork<TCustomDomainContext> As<TCustomDomainContext>() where TCustomDomainContext : IDomain
- {
- return new UnitOfWork<TCustomDomainContext>((TCustomDomainContext)(IDomain)Context);
- }
- protected override void OnDisposing()
- {
- Context?.Rollback();
- Context = default;
- }
- }
- }
|