Delete nav

This commit is contained in:
sunkaixuan 2022-07-07 22:23:05 +08:00
parent 9f275a3cd4
commit 2711587ef7
8 changed files with 136 additions and 36 deletions

View File

@ -7,35 +7,19 @@ using System.Threading.Tasks;
namespace SqlSugar namespace SqlSugar
{ {
public class DeleteNavProvider<Root,T> public class DeleteNavProvider<Root, T> where T : class, new() where Root : class, new()
{ {
public SqlSugarProvider _Context { get; internal set; }
public List<Root> Roots { get; set; } public DeleteNavTask<Root, TChild> ThenInclude< TChild>(Expression<Func<Root, TChild>> expression)
public SqlSugarProvider Context { get; internal set; } where TChild : class, new()
public DeleteNavProvider<Root,TChild> ThenInclude<TChild>(Expression<Func<T,TChild>> expression)
{ {
throw new Exception("开发中7月15号之前上线"); throw new NotImplementedException();
} }
public DeleteNavProvider<Root, TChild> Include<TChild>(Expression<Func<T, TChild>> expression) public DeleteNavTask<Root, TChild> ThenInclude<TChild>(Expression<Func<Root, List<TChild>>> expression)
where TChild : class, new()
{ {
throw new Exception("开发中7月15号之前上线"); throw new NotImplementedException();
}
public DeleteNavProvider<Root, TChild> ThenInclude<TChild>(Expression<Func<T, List<TChild>>> expression)
{
throw new Exception("开发中7月15号之前上线");
}
public DeleteNavProvider<Root, TChild> Include<TChild>(Expression<Func<T, List<TChild>>> expression)
{
throw new Exception("开发中7月15号之前上线");
}
private DeleteNavProvider<Root,Root> AsNav()
{
throw new Exception("开发中7月15号之前上线");
}
public bool ExecuteCommand()
{
return true;
} }
} }
} }

View File

@ -0,0 +1,98 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
namespace SqlSugar
{
public class DeleteNavTaskInit<Root,T> where T : class, new() where Root : class, new()
{
public List<T> Roots { get; set; }
internal SqlSugarProvider Context { get; set; }
internal DeleteNavProvider<Root, Root> deleteNavProvider { get; set; }
public DeleteNavTask<Root, TChild> Include<TChild>(Expression<Func<Root, TChild>> expression) where TChild : class, new()
{
this.Context = deleteNavProvider._Context;
DeleteNavTask<Root, TChild> result = new DeleteNavTask<Root, TChild>();
Func<DeleteNavTask<Root, TChild>> func = () => deleteNavProvider.ThenInclude(expression);
result.PreFunc = func;
result.Context = this.Context;
return result;
}
public DeleteNavTask<Root, TChild> Include<TChild>(Expression<Func<Root, List<TChild>>> expression) where TChild : class, new()
{
this.Context = deleteNavProvider._Context;
DeleteNavTask<Root, TChild> result = new DeleteNavTask<Root, TChild>();
Func<DeleteNavTask<Root, TChild>> func = () => deleteNavProvider.ThenInclude(expression);
result.PreFunc = func;
result.Context = this.Context;
return result;
}
}
public class DeleteNavTask<Root, T> where T : class, new() where Root : class, new()
{
public SqlSugarProvider Context { get; set; }
public Func<DeleteNavTask<Root, T>> PreFunc { get; set; }
public DeleteNavTask<Root, TChild> ThenInclude<TChild>(Expression<Func<T, TChild>> expression) where TChild : class, new()
{
DeleteNavTask<Root, TChild> result = new DeleteNavTask<Root, TChild>();
Func<DeleteNavTask<Root, TChild>> func = () => PreFunc().ThenInclude(expression);
result.PreFunc = func;
result.Context = this.Context;
return result;
}
public DeleteNavTask<Root, TChild> ThenInclude<TChild>(Expression<Func<T, List<TChild>>> expression) where TChild : class, new()
{
DeleteNavTask<Root, TChild> result = new DeleteNavTask<Root, TChild>();
Func<DeleteNavTask<Root, TChild>> func = () => PreFunc().ThenInclude(expression);
result.PreFunc = func;
result.Context = this.Context;
return result;
}
public DeleteNavTask<Root, TChild> Include<TChild>(Expression<Func<Root, TChild>> expression) where TChild : class, new()
{
return AsNav().ThenInclude(expression);
}
public DeleteNavTask<Root, TChild> Include<TChild>(Expression<Func<Root, List<TChild>>> expression) where TChild : class, new()
{
return AsNav().ThenInclude(expression);
}
public bool ExecuteCommand()
{
var hasTran = this.Context.Ado.Transaction != null;
if (hasTran)
{
PreFunc();
}
else
{
this.Context.Ado.UseTran(() =>
{
PreFunc();
}, ex => throw ex);
}
return true;
}
public async Task<bool> ExecuteCommandAsync()
{
await Task.Run(async () =>
{
ExecuteCommand();
await Task.Delay(0);
});
return true;
}
private DeleteNavTask<Root, Root> AsNav()
{
DeleteNavTask<Root, Root> result = new DeleteNavTask<Root, Root>();
Func<DeleteNavTask<Root, Root>> func = () => PreFunc().AsNav();
result.PreFunc = func;
result.Context = this.Context;
return result;
}
}
}

View File

@ -903,17 +903,21 @@ namespace SqlSugar
result.insertNavProvider = provider; result.insertNavProvider = provider;
return result; return result;
} }
public DeleteNavProvider<T, T> DeleteNav<T>(T data) public DeleteNavTaskInit<T, T> DeleteNav<T>(T data) where T : class, new()
{ {
return DeleteNav(new List<T>() { data }); return DeleteNav(new List<T>() { data });
} }
public DeleteNavProvider<T, T> DeleteNav<T>(List<T> datas) public DeleteNavTaskInit<T, T> DeleteNav<T>(List<T> datas) where T : class, new()
{ {
var result = new DeleteNavProvider<T, T>(); var result = new DeleteNavTaskInit<T, T>();
result.Roots = datas; result.Roots = datas;
result.Context = this; result.Context = this;
return result; return result;
} }
public DeleteNavTaskInit<T, T> DeleteNav<T>(Expression<Func<T, bool>> whereExpression) where T : class, new()
{
return DeleteNav(this.Queryable<T>().Where(whereExpression).ToList());
}
public UpdateNavProvider<T, T> UpdateNav<T>(T data) public UpdateNavProvider<T, T> UpdateNav<T>(T data)
{ {
return UpdateNav(new List<T>() { data }); return UpdateNav(new List<T>() { data });

View File

@ -686,14 +686,18 @@ namespace SqlSugar
{ {
return ScopedContext.InsertNav(datas); return ScopedContext.InsertNav(datas);
} }
public DeleteNavProvider<T, T> DeleteNav<T>(T data) public DeleteNavTaskInit<T, T> DeleteNav<T>(T data) where T : class, new()
{ {
return ScopedContext.DeleteNav(data); return ScopedContext.DeleteNav(data);
} }
public DeleteNavProvider<T, T> DeleteNav<T>(List<T> datas) public DeleteNavTaskInit<T, T> DeleteNav<T>(List<T> datas) where T : class, new()
{ {
return ScopedContext.DeleteNav(datas); return ScopedContext.DeleteNav(datas);
} }
public DeleteNavTaskInit<T, T> DeleteNav<T>(Expression<Func<T, bool>> whereExpression) where T : class, new()
{
return ScopedContext.DeleteNav(whereExpression);
}
public UpdateNavProvider<T, T> UpdateNav<T>(T data) public UpdateNavProvider<T, T> UpdateNav<T>(T data)
{ {
return ScopedContext.UpdateNav(data); return ScopedContext.UpdateNav(data);

View File

@ -205,8 +205,9 @@ namespace SqlSugar
#region Nav CUD #region Nav CUD
InsertNavTaskInit<T, T> InsertNav<T>(T data) where T : class, new(); InsertNavTaskInit<T, T> InsertNav<T>(T data) where T : class, new();
InsertNavTaskInit<T, T> InsertNav<T>(List<T> datas) where T : class, new(); InsertNavTaskInit<T, T> InsertNav<T>(List<T> datas) where T : class, new();
DeleteNavProvider<T, T> DeleteNav<T>(T data); DeleteNavTaskInit<T, T> DeleteNav<T>(T data) where T : class, new();
DeleteNavProvider<T, T> DeleteNav<T>(List<T> datas); DeleteNavTaskInit<T, T> DeleteNav<T>(List<T> datas) where T : class, new();
DeleteNavTaskInit<T, T> DeleteNav<T>(Expression<Func<T,bool>> whereExpression) where T : class, new();
UpdateNavProvider<T, T> UpdateNav<T>(T data); UpdateNavProvider<T, T> UpdateNav<T>(T data);
UpdateNavProvider<T, T> UpdateNav<T>(List<T> datas); UpdateNavProvider<T, T> UpdateNav<T>(List<T> datas);
#endregion #endregion

View File

@ -89,11 +89,12 @@
<Compile Include="Abstract\DeleteProvider\SplitTableDeleteByObjectProvider.cs" /> <Compile Include="Abstract\DeleteProvider\SplitTableDeleteByObjectProvider.cs" />
<Compile Include="Abstract\DeleteProvider\SplitTableDeleteProvider.cs" /> <Compile Include="Abstract\DeleteProvider\SplitTableDeleteProvider.cs" />
<Compile Include="Abstract\EntityMaintenance\EntityMaintenance.cs" /> <Compile Include="Abstract\EntityMaintenance\EntityMaintenance.cs" />
<Compile Include="Abstract\ExecuteNavProvider\DeleteNavProvider.cs" />
<Compile Include="Abstract\ExecuteNavProvider\InsertNavProviderHelper.cs" /> <Compile Include="Abstract\ExecuteNavProvider\InsertNavProviderHelper.cs" />
<Compile Include="Abstract\ExecuteNavProvider\InsertNavProviderOneToMany.cs" /> <Compile Include="Abstract\ExecuteNavProvider\InsertNavProviderOneToMany.cs" />
<Compile Include="Abstract\ExecuteNavProvider\InsertNavProviderManyToMany.cs" /> <Compile Include="Abstract\ExecuteNavProvider\InsertNavProviderManyToMany.cs" />
<Compile Include="Abstract\ExecuteNavProvider\InsertNavProviderOneToOne.cs" /> <Compile Include="Abstract\ExecuteNavProvider\InsertNavProviderOneToOne.cs" />
<Compile Include="Abstract\ExecuteNavProvider\DeleteNavProvider.cs" /> <Compile Include="Abstract\ExecuteNavProvider\DeleteNavTask.cs" />
<Compile Include="Abstract\ExecuteNavProvider\InsertNavTask.cs" /> <Compile Include="Abstract\ExecuteNavProvider\InsertNavTask.cs" />
<Compile Include="Abstract\ExecuteNavProvider\UpdateInsert.cs" /> <Compile Include="Abstract\ExecuteNavProvider\UpdateInsert.cs" />
<Compile Include="Abstract\ExecuteNavProvider\InsertNavProvider.cs" /> <Compile Include="Abstract\ExecuteNavProvider\InsertNavProvider.cs" />

View File

@ -162,14 +162,18 @@ namespace SqlSugar
{ {
return this.Context.InsertNav(datas); return this.Context.InsertNav(datas);
} }
public DeleteNavProvider<T, T> DeleteNav<T>(T data) public DeleteNavTaskInit<T, T> DeleteNav<T>(T data) where T : class, new()
{ {
return this.Context.DeleteNav(data); return this.Context.DeleteNav(data);
} }
public DeleteNavProvider<T, T> DeleteNav<T>(List<T> datas) public DeleteNavTaskInit<T, T> DeleteNav<T>(List<T> datas) where T : class, new()
{ {
return this.Context.DeleteNav(datas); return this.Context.DeleteNav(datas);
} }
public DeleteNavTaskInit<T, T> DeleteNav<T>(Expression<Func<T, bool>> whereExpression) where T : class, new()
{
return this.Context.DeleteNav(whereExpression);
}
public UpdateNavProvider<T, T> UpdateNav<T>(T data) public UpdateNavProvider<T, T> UpdateNav<T>(T data)
{ {
return this.Context.UpdateNav(data); return this.Context.UpdateNav(data);

View File

@ -742,14 +742,18 @@ namespace SqlSugar
{ {
return ScopedContext.InsertNav(datas); return ScopedContext.InsertNav(datas);
} }
public DeleteNavProvider<T, T> DeleteNav<T>(T data) public DeleteNavTaskInit<T, T> DeleteNav<T>(T data) where T : class, new()
{ {
return ScopedContext.DeleteNav(data); return ScopedContext.DeleteNav(data);
} }
public DeleteNavProvider<T, T> DeleteNav<T>(List<T> datas) public DeleteNavTaskInit<T, T> DeleteNav<T>(List<T> datas) where T : class, new()
{ {
return ScopedContext.DeleteNav(datas); return ScopedContext.DeleteNav(datas);
} }
public DeleteNavTaskInit<T, T> DeleteNav<T>(Expression<Func<T, bool>> whereExpression) where T : class, new()
{
return ScopedContext.DeleteNav(whereExpression);
}
public UpdateNavProvider<T, T> UpdateNav<T>(T data) public UpdateNavProvider<T, T> UpdateNav<T>(T data)
{ {
return ScopedContext.UpdateNav(data); return ScopedContext.UpdateNav(data);