Browse Source

Seperate IUnitOfWork interface.

pull/81/head
Halil İbrahim Kalkan 10 years ago
parent
commit
b878f78912
  1. 9
      src/Volo.Abp/Volo/Abp/Uow/ChildUnitOfWork.cs
  2. 18
      src/Volo.Abp/Volo/Abp/Uow/IBasicUnitOfWork.cs
  3. 15
      src/Volo.Abp/Volo/Abp/Uow/IDatabaseApiContainer.cs
  4. 27
      src/Volo.Abp/Volo/Abp/Uow/IUnitOfWork.cs
  5. 2
      src/Volo.Abp/Volo/Abp/Uow/IUnitOfWorkManager.cs
  6. 16
      src/Volo.Abp/Volo/Abp/Uow/UnitOfWork.cs
  7. 4
      src/Volo.Abp/Volo/Abp/Uow/UnitOfWorkManager.cs

9
src/Volo.Abp/Volo/Abp/Uow/ChildUnitOfWork.cs

@ -47,14 +47,7 @@ namespace Volo.Abp.Uow
{
return _parent.GetOrAddDatabaseApi(id, factory);
}
public IDatabaseApi AddDatabaseApi(string id, IDatabaseApi databaseApi)
{
return _parent.AddDatabaseApi(id, databaseApi);
}
public void Dispose()
{

18
src/Volo.Abp/Volo/Abp/Uow/IBasicUnitOfWork.cs

@ -0,0 +1,18 @@
using System;
using System.Threading;
using System.Threading.Tasks;
namespace Volo.Abp.Uow
{
//Find a better naming :(
public interface IBasicUnitOfWork : IDisposable
{
void SaveChanges();
Task SaveChangesAsync(CancellationToken cancellationToken = default(CancellationToken));
void Complete();
Task CompleteAsync(CancellationToken cancellationToken = default(CancellationToken));
}
}

15
src/Volo.Abp/Volo/Abp/Uow/IDatabaseApiContainer.cs

@ -0,0 +1,15 @@
using System;
using JetBrains.Annotations;
using Volo.DependencyInjection;
namespace Volo.Abp.Uow
{
public interface IDatabaseApiContainer : IServiceProviderAccessor
{
[CanBeNull]
IDatabaseApi FindDatabaseApi([NotNull] string id);
[NotNull]
IDatabaseApi GetOrAddDatabaseApi(string id, Func<IDatabaseApi> factory);
}
}

27
src/Volo.Abp/Volo/Abp/Uow/IUnitOfWork.cs

@ -1,29 +1,6 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using JetBrains.Annotations;
using Volo.DependencyInjection;
namespace Volo.Abp.Uow
namespace Volo.Abp.Uow
{
public interface IUnitOfWork : IDisposable, IServiceProviderAccessor, ITransientDependency
public interface IUnitOfWork : IBasicUnitOfWork, IDatabaseApiContainer
{
[CanBeNull]
IDatabaseApi FindDatabaseApi([NotNull] string id);
//TODO: Move Database API methods to another interface!
[NotNull]
IDatabaseApi GetOrAddDatabaseApi(string id, Func<IDatabaseApi> factory);
IDatabaseApi AddDatabaseApi(string id, IDatabaseApi databaseApi);
void SaveChanges();
Task SaveChangesAsync(CancellationToken cancellationToken = default(CancellationToken));
void Complete();
Task CompleteAsync(CancellationToken cancellationToken = default(CancellationToken));
}
}

2
src/Volo.Abp/Volo/Abp/Uow/IUnitOfWorkManager.cs

@ -8,6 +8,6 @@ namespace Volo.Abp.Uow
IUnitOfWork Current { get; }
[NotNull]
IUnitOfWork Begin();
IBasicUnitOfWork Begin();
}
}

16
src/Volo.Abp/Volo/Abp/Uow/UnitOfWork.cs

@ -2,11 +2,12 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Volo.DependencyInjection;
using Volo.ExtensionMethods.Collections.Generic;
namespace Volo.Abp.Uow
{
public class UnitOfWork : IUnitOfWork
public class UnitOfWork : IUnitOfWork, ITransientDependency
{
public IServiceProvider ServiceProvider { get; }
@ -75,18 +76,5 @@ namespace Volo.Abp.Uow
return _databaseApis.GetOrAdd(id, factory);
}
public IDatabaseApi AddDatabaseApi(string id, IDatabaseApi databaseApi)
{
Check.NotNull(id, nameof(id));
Check.NotNull(databaseApi, nameof(databaseApi));
if (_databaseApis.ContainsKey(id))
{
throw new AbpException($"There is already a database api with same id: {id}");
}
return _databaseApis[id] = databaseApi;
}
}
}

4
src/Volo.Abp/Volo/Abp/Uow/UnitOfWorkManager.cs

@ -1,4 +1,5 @@
using System;
using System.Diagnostics;
using Microsoft.Extensions.DependencyInjection;
using Volo.DependencyInjection;
@ -17,7 +18,7 @@ namespace Volo.Abp.Uow
_ambientUnitOfWork = ambientUnitOfWork;
}
public IUnitOfWork Begin()
public IBasicUnitOfWork Begin()
{
if (_ambientUnitOfWork.UnitOfWork != null)
{
@ -35,6 +36,7 @@ namespace Volo.Abp.Uow
throw;
}
Debug.Assert(_ambientUnitOfWork.UnitOfWork != null, "_ambientUnitOfWork.UnitOfWork can not be null since it's set by _ambientUnitOfWork.SetUnitOfWork method!");
return _ambientUnitOfWork.UnitOfWork;
}
}

Loading…
Cancel
Save