mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-18 20:08:15 +08:00
增加 UnitOfWorkManager 类管理工作单元,移除 FreeSql.UnitOfWork.Current 静态属性;
This commit is contained in:
Binary file not shown.
Binary file not shown.
@ -70,12 +70,12 @@ namespace FreeSql
|
||||
{
|
||||
if (this.Repository == null)
|
||||
return Orm.Update<TEntity>(this as TEntity)
|
||||
.WithTransaction(UnitOfWork.Current.Value?.GetOrBeginTransaction())
|
||||
.WithTransaction(CurrentUnitOfWork?.GetOrBeginTransaction())
|
||||
.Set(a => (a as BaseEntity).IsDeleted, this.IsDeleted = value).ExecuteAffrows() == 1;
|
||||
|
||||
this.SetTenantId();
|
||||
this.IsDeleted = value;
|
||||
this.Repository.UnitOfWork = UnitOfWork.Current.Value;
|
||||
this.Repository.UnitOfWork = CurrentUnitOfWork;
|
||||
return this.Repository.Update(this as TEntity) == 1;
|
||||
}
|
||||
/// <summary>
|
||||
@ -89,7 +89,7 @@ namespace FreeSql
|
||||
if (this.Repository == null)
|
||||
return Orm.Delete<TEntity>(this as TEntity).ExecuteAffrows() == 1;
|
||||
//this.SetTenantId();
|
||||
this.Repository.UnitOfWork = UnitOfWork.Current.Value;
|
||||
this.Repository.UnitOfWork = CurrentUnitOfWork;
|
||||
return this.Repository.Delete(this as TEntity) == 1;
|
||||
}
|
||||
/// <summary>
|
||||
@ -107,11 +107,11 @@ namespace FreeSql
|
||||
this.UpdateTime = DateTime.Now;
|
||||
if (this.Repository == null)
|
||||
return Orm.Update<TEntity>()
|
||||
.WithTransaction(UnitOfWork.Current.Value?.GetOrBeginTransaction())
|
||||
.WithTransaction(CurrentUnitOfWork?.GetOrBeginTransaction())
|
||||
.SetSource(this as TEntity).ExecuteAffrows() == 1;
|
||||
|
||||
this.SetTenantId();
|
||||
this.Repository.UnitOfWork = UnitOfWork.Current.Value;
|
||||
this.Repository.UnitOfWork = CurrentUnitOfWork;
|
||||
return this.Repository.Update(this as TEntity) == 1;
|
||||
}
|
||||
/// <summary>
|
||||
@ -124,7 +124,7 @@ namespace FreeSql
|
||||
this.Repository = Orm.GetRepository<TEntity>();
|
||||
|
||||
this.SetTenantId();
|
||||
this.Repository.UnitOfWork = UnitOfWork.Current.Value;
|
||||
this.Repository.UnitOfWork = CurrentUnitOfWork;
|
||||
return this.Repository.Insert(this as TEntity);
|
||||
}
|
||||
|
||||
@ -139,7 +139,7 @@ namespace FreeSql
|
||||
this.Repository = Orm.GetRepository<TEntity>();
|
||||
|
||||
this.SetTenantId();
|
||||
this.Repository.UnitOfWork = UnitOfWork.Current.Value;
|
||||
this.Repository.UnitOfWork = CurrentUnitOfWork;
|
||||
return this.Repository.InsertOrUpdate(this as TEntity);
|
||||
}
|
||||
|
||||
@ -152,7 +152,7 @@ namespace FreeSql
|
||||
if (this.Repository == null)
|
||||
this.Repository = Orm.GetRepository<TEntity>();
|
||||
|
||||
this.Repository.UnitOfWork = UnitOfWork.Current.Value;
|
||||
this.Repository.UnitOfWork = CurrentUnitOfWork;
|
||||
this.Repository.SaveMany(this as TEntity, navigatePropertyName);
|
||||
}
|
||||
}
|
||||
|
@ -53,11 +53,11 @@ namespace FreeSql
|
||||
{
|
||||
if (this.Repository == null)
|
||||
return await Orm.Update<TEntity>(this as TEntity)
|
||||
.WithTransaction(UnitOfWork.Current.Value?.GetOrBeginTransaction())
|
||||
.WithTransaction(CurrentUnitOfWork?.GetOrBeginTransaction())
|
||||
.Set(a => (a as BaseEntity).IsDeleted, this.IsDeleted = value).ExecuteAffrowsAsync() == 1;
|
||||
|
||||
this.IsDeleted = value;
|
||||
this.Repository.UnitOfWork = UnitOfWork.Current.Value;
|
||||
this.Repository.UnitOfWork = CurrentUnitOfWork;
|
||||
return await this.Repository.UpdateAsync(this as TEntity) == 1;
|
||||
}
|
||||
/// <summary>
|
||||
@ -71,7 +71,7 @@ namespace FreeSql
|
||||
if (this.Repository == null)
|
||||
return await Orm.Delete<TEntity>(this as TEntity).ExecuteAffrowsAsync() == 1;
|
||||
//this.SetTenantId();
|
||||
this.Repository.UnitOfWork = UnitOfWork.Current.Value;
|
||||
this.Repository.UnitOfWork = CurrentUnitOfWork;
|
||||
return await this.Repository.DeleteAsync(this as TEntity) == 1;
|
||||
}
|
||||
/// <summary>
|
||||
@ -89,11 +89,11 @@ namespace FreeSql
|
||||
this.UpdateTime = DateTime.Now;
|
||||
if (this.Repository == null)
|
||||
return await Orm.Update<TEntity>()
|
||||
.WithTransaction(UnitOfWork.Current.Value?.GetOrBeginTransaction())
|
||||
.WithTransaction(CurrentUnitOfWork?.GetOrBeginTransaction())
|
||||
.SetSource(this as TEntity).ExecuteAffrowsAsync() == 1;
|
||||
|
||||
this.SetTenantId();
|
||||
this.Repository.UnitOfWork = UnitOfWork.Current.Value;
|
||||
this.Repository.UnitOfWork = CurrentUnitOfWork;
|
||||
return await this.Repository.UpdateAsync(this as TEntity) == 1;
|
||||
}
|
||||
/// <summary>
|
||||
@ -106,7 +106,7 @@ namespace FreeSql
|
||||
this.Repository = Orm.GetRepository<TEntity>();
|
||||
|
||||
this.SetTenantId();
|
||||
this.Repository.UnitOfWork = UnitOfWork.Current.Value;
|
||||
this.Repository.UnitOfWork = CurrentUnitOfWork;
|
||||
return this.Repository.InsertAsync(this as TEntity);
|
||||
}
|
||||
|
||||
@ -121,7 +121,7 @@ namespace FreeSql
|
||||
this.Repository = Orm.GetRepository<TEntity>();
|
||||
|
||||
this.SetTenantId();
|
||||
this.Repository.UnitOfWork = UnitOfWork.Current.Value;
|
||||
this.Repository.UnitOfWork = CurrentUnitOfWork;
|
||||
return this.Repository.InsertOrUpdateAsync(this as TEntity);
|
||||
}
|
||||
|
||||
@ -134,7 +134,7 @@ namespace FreeSql
|
||||
if (this.Repository == null)
|
||||
this.Repository = Orm.GetRepository<TEntity>();
|
||||
|
||||
this.Repository.UnitOfWork = UnitOfWork.Current.Value;
|
||||
this.Repository.UnitOfWork = CurrentUnitOfWork;
|
||||
return this.Repository.SaveManyAsync(this as TEntity, navigatePropertyName);
|
||||
}
|
||||
}
|
||||
|
@ -106,9 +106,11 @@ namespace FreeSql
|
||||
{
|
||||
var uow = Orm.CreateUnitOfWork();
|
||||
uow.IsolationLevel = level;
|
||||
CurrentUnitOfWork = uow;
|
||||
return uow;
|
||||
}
|
||||
|
||||
static readonly AsyncLocal<IUnitOfWork> _AsyncUnitOfWork = new AsyncLocal<IUnitOfWork>();
|
||||
static readonly AsyncLocal<string> _AsyncTenantId = new AsyncLocal<string>();
|
||||
/// <summary>
|
||||
/// 获取或设置当前租户id
|
||||
@ -118,6 +120,14 @@ namespace FreeSql
|
||||
get => _AsyncTenantId.Value;
|
||||
set => _AsyncTenantId.Value = value;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取或设置当前租户id
|
||||
/// </summary>
|
||||
public static IUnitOfWork CurrentUnitOfWork
|
||||
{
|
||||
get => _AsyncUnitOfWork.Value;
|
||||
set => _AsyncUnitOfWork.Value = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -143,7 +153,7 @@ namespace FreeSql
|
||||
{
|
||||
var select = Orm.Select<TEntity>()
|
||||
.TrackToList(TrackToList) //自动为每个元素 Attach
|
||||
.WithTransaction(UnitOfWork.Current.Value?.GetOrBeginTransaction(false));
|
||||
.WithTransaction(CurrentUnitOfWork?.GetOrBeginTransaction(false));
|
||||
if (string.IsNullOrEmpty(CurrentTenantId) == false)
|
||||
select.WhereCascade(a => (a as ITenant).TenantId == CurrentTenantId);
|
||||
return select.WhereCascade(a => (a as BaseEntity).IsDeleted == false);
|
||||
|
@ -79,7 +79,7 @@ namespace FreeSql
|
||||
buf.Add(this as TEntity);
|
||||
buf.AddRange(this.GetAllChilds());
|
||||
var repo = Orm.GetRepository<TEntity>();
|
||||
repo.UnitOfWork = UnitOfWork.Current.Value;
|
||||
repo.UnitOfWork = CurrentUnitOfWork;
|
||||
buf = repo.Select.WhereDynamic(buf)
|
||||
.Include(a => ((((((((((a as BaseEntityTree<TEntity, TKey>).Parent
|
||||
as BaseEntityTree<TEntity, TKey>).Parent
|
||||
@ -110,7 +110,7 @@ namespace FreeSql
|
||||
var childs = GetAllChilds();
|
||||
childs.Add(this as TEntity);
|
||||
var repo = Orm.GetRepository<TEntity>();
|
||||
repo.UnitOfWork = UnitOfWork.Current.Value;
|
||||
repo.UnitOfWork = CurrentUnitOfWork;
|
||||
repo.Attach(childs);
|
||||
foreach (var item in childs)
|
||||
(item as BaseEntity).IsDeleted = false;
|
||||
|
Reference in New Issue
Block a user