Commit 13f40f08 authored by 阿星Plus's avatar 阿星Plus

修复工作单元无法注入的问题

parent fefafb4b
namespace Plus.Configuration
{
public class DefaultSettings : SettingsBase
{
public string DefaultNameOrConnectionString => Config["ConnectionStrings"];
}
}
\ No newline at end of file
......@@ -15,6 +15,11 @@ namespace Plus.Configuration.Startup
/// </summary>
IIocManager IocManager { get; }
/// <summary>
/// DefaultSettings
/// </summary>
DefaultSettings DefaultSettings { get; }
/// <summary>
/// 用于替换服务类型
/// </summary>
......
......@@ -21,6 +21,8 @@ namespace Plus.Configuration.Startup
public IValidationConfiguration Validation { get; private set; }
public DefaultSettings DefaultSettings { get; private set; }
public PlusStartupConfiguration(IIocManager iocManager)
{
IocManager = iocManager;
......
using Plus.Configuration.Startup;
using Plus.Dependency;
namespace Plus.Domain.Uow
{
/// <summary>
/// DefaultConnectionStringResolver
/// </summary>
public class DefaultConnectionStringResolver : IConnectionStringResolver, ITransientDependency
{
private readonly IPlusStartupConfiguration _configuration;
public DefaultConnectionStringResolver(IPlusStartupConfiguration configuration)
{
_configuration = configuration;
}
public virtual string GetNameOrConnectionString(ConnectionStringResolveArgs args)
{
string defaultNameOrConnectionString = _configuration.DefaultSettings.DefaultNameOrConnectionString;
if (!string.IsNullOrWhiteSpace(defaultNameOrConnectionString))
{
return defaultNameOrConnectionString;
}
return defaultNameOrConnectionString;
}
}
}
\ No newline at end of file
using Plus.Dependency;
using System.Linq;
using System.Transactions;
namespace Plus.Domain.Uow
{
/// <summary>
/// UnitOfWorkManager
/// </summary>
public class UnitOfWorkManager : IUnitOfWorkManager, ITransientDependency
{
private readonly IIocResolver _iocResolver;
private readonly ICurrentUnitOfWorkProvider _currentUnitOfWorkProvider;
private readonly IUnitOfWorkDefaultOptions _defaultOptions;
public IActiveUnitOfWork Current => _currentUnitOfWorkProvider.Current;
public UnitOfWorkManager(IIocResolver iocResolver, ICurrentUnitOfWorkProvider currentUnitOfWorkProvider, IUnitOfWorkDefaultOptions defaultOptions)
{
_iocResolver = iocResolver;
_currentUnitOfWorkProvider = currentUnitOfWorkProvider;
_defaultOptions = defaultOptions;
}
public IUnitOfWorkCompleteHandle Begin()
{
return Begin(new UnitOfWorkOptions());
}
public IUnitOfWorkCompleteHandle Begin(TransactionScopeOption scope)
{
return Begin(new UnitOfWorkOptions
{
Scope = scope
});
}
public IUnitOfWorkCompleteHandle Begin(UnitOfWorkOptions options)
{
options.FillDefaultsForNonProvidedOptions(_defaultOptions);
IUnitOfWork current = _currentUnitOfWorkProvider.Current;
if (options.Scope == TransactionScopeOption.Required && current != null)
{
return new InnerUnitOfWorkCompleteHandle();
}
IUnitOfWork uow = _iocResolver.Resolve<IUnitOfWork>();
uow.Completed += delegate
{
_currentUnitOfWorkProvider.Current = null;
};
uow.Failed += delegate
{
_currentUnitOfWorkProvider.Current = null;
};
uow.Disposed += delegate
{
_iocResolver.Release(uow);
};
if (current != null)
{
options.FillOuterUowFiltersForNonProvidedOptions(current.Filters.ToList());
}
uow.Begin(options);
_currentUnitOfWorkProvider.Current = uow;
return uow;
}
}
}
\ No newline at end of file
......@@ -17,7 +17,7 @@
<PackageLicenseUrl>https://raw.githubusercontent.com/Meowv/.netcoreplus/master/LICENSE</PackageLicenseUrl>
<PackageTags>plus;.netcoreplus;</PackageTags>
<PackageReleaseNotes>Plus</PackageReleaseNotes>
<Version>1.0.0.1</Version>
<Version>1.0.1</Version>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment