mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 10:42:52 +08:00
update demo
This commit is contained in:
parent
3339d96117
commit
4d91d87660
@ -70,9 +70,9 @@ namespace aspnetcore_transaction.Controllers
|
||||
_repoSong2.Insert(new Song());
|
||||
}
|
||||
[Transactional(Propagation = Propagation.Nested)] //sqlite 不能嵌套事务,会锁库的
|
||||
async public Task Test11()
|
||||
public Task Test11()
|
||||
{
|
||||
await Task.Delay(TimeSpan.FromSeconds(10)).ContinueWith(t =>
|
||||
return Task.Delay(TimeSpan.FromSeconds(1)).ContinueWith(t =>
|
||||
_repoSong.InsertAsync(new Song()));
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ using Rougamo.Context;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
@ -18,8 +19,7 @@ namespace FreeSql
|
||||
IsolationLevel? m_IsolationLevel;
|
||||
|
||||
static AsyncLocal<IServiceProvider> m_ServiceProvider = new AsyncLocal<IServiceProvider>();
|
||||
public static void SetServiceProvider(IServiceProvider serviceProvider) =>
|
||||
m_ServiceProvider.Value = serviceProvider;
|
||||
public static void SetServiceProvider(IServiceProvider serviceProvider) => m_ServiceProvider.Value = serviceProvider;
|
||||
|
||||
IUnitOfWork _uow;
|
||||
public override void OnEntry(MethodContext context)
|
||||
@ -28,6 +28,15 @@ namespace FreeSql
|
||||
_uow = uowManager.Begin(this.Propagation, this.m_IsolationLevel);
|
||||
}
|
||||
public override void OnExit(MethodContext context)
|
||||
{
|
||||
if (typeof(Task).IsAssignableFrom(context.RealReturnType))
|
||||
{
|
||||
((Task)context.ReturnValue).ContinueWith(t => _OnExit());
|
||||
return;
|
||||
}
|
||||
_OnExit();
|
||||
|
||||
void _OnExit()
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -41,3 +50,4 @@ namespace FreeSql
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user