Update .net core project

This commit is contained in:
sunkaixuan 2022-07-17 00:13:30 +08:00
parent 8a528196ff
commit f7de1cacd4
7 changed files with 105 additions and 9 deletions

View File

@ -74,11 +74,11 @@ namespace SqlSugar
private bool IsDeleteA() private bool IsDeleteA()
{ {
return deleteNavOptions != null && deleteNavOptions.ManyToMayIsDeleteA; return deleteNavOptions != null && deleteNavOptions.ManyToManyIsDeleteA;
} }
private bool IsDeleteB() private bool IsDeleteB()
{ {
return deleteNavOptions != null && deleteNavOptions.ManyToMayIsDeleteB; return deleteNavOptions != null && deleteNavOptions.ManyToManyIsDeleteB;
} }
} }
} }

View File

@ -78,6 +78,10 @@ namespace SqlSugar
{ {
return AsNav().ThenInclude(expression); return AsNav().ThenInclude(expression);
} }
public DeleteNavTask<Root, TChild> Include<TChild>(Expression<Func<Root, List<TChild>>> expression,DeleteNavOptions options) where TChild : class, new()
{
return AsNav().ThenInclude(expression, options);
}
public bool ExecuteCommand() public bool ExecuteCommand()
{ {
PreFunc(); PreFunc();

View File

@ -10,7 +10,6 @@ namespace SqlSugar
{ {
private void UpdateManyToMany<TChild>(string name, EntityColumnInfo nav) where TChild : class, new() private void UpdateManyToMany<TChild>(string name, EntityColumnInfo nav) where TChild : class, new()
{ {
;
var parentEntity = _ParentEntity; var parentEntity = _ParentEntity;
var parentList = _ParentList; var parentList = _ParentList;
var parentPkColumn = parentEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true); var parentPkColumn = parentEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true);
@ -33,7 +32,14 @@ namespace SqlSugar
{ {
var items = parentNavigateProperty.PropertyInfo.GetValue(item); var items = parentNavigateProperty.PropertyInfo.GetValue(item);
var children = ((List<TChild>)items); var children = ((List<TChild>)items);
if (this._Options != null && this._Options.ManyToManyIsUpdateB)
{
InsertDatas(children, thisPkColumn); InsertDatas(children, thisPkColumn);
}
else
{
_ParentList = children.Cast<object>().ToList();
}
var parentId = parentPkColumn.PropertyInfo.GetValue(item); var parentId = parentPkColumn.PropertyInfo.GetValue(item);
foreach (var child in children) foreach (var child in children)
{ {
@ -51,6 +57,7 @@ namespace SqlSugar
var ids = mappgingTables.Select(x => x[mappingA.DbColumnName]).ToList(); var ids = mappgingTables.Select(x => x[mappingA.DbColumnName]).ToList();
this._Context.Deleteable<object>().AS(mappingEntity.DbTableName).In(mappingA.DbColumnName, ids).ExecuteCommand(); this._Context.Deleteable<object>().AS(mappingEntity.DbTableName).In(mappingA.DbColumnName, ids).ExecuteCommand();
this._Context.Insertable(mappgingTables).AS(mappingEntity.DbTableName).ExecuteCommand(); this._Context.Insertable(mappgingTables).AS(mappingEntity.DbTableName).ExecuteCommand();
_ParentEntity = thisEntity;
} }
private void SetMappingTableDefaultValue(EntityColumnInfo mappingPk, Dictionary<string, object> keyValuePairs) private void SetMappingTableDefaultValue(EntityColumnInfo mappingPk, Dictionary<string, object> keyValuePairs)

View File

@ -17,7 +17,7 @@ namespace SqlSugar
public EntityColumnInfo _ParentPkColumn { get; set; } public EntityColumnInfo _ParentPkColumn { get; set; }
public SqlSugarProvider _Context { get; set; } public SqlSugarProvider _Context { get; set; }
public UpdateNavOptions _Options { get; set; }
public UpdateNavProvider<Root, Root> AsNav() public UpdateNavProvider<Root, Root> AsNav()
{ {
return new UpdateNavProvider<Root, Root> return new UpdateNavProvider<Root, Root>
@ -30,6 +30,28 @@ namespace SqlSugar
}; };
} }
public UpdateNavProvider<Root, TChild> ThenInclude<TChild>(Expression<Func<T, TChild>> expression) where TChild : class, new() public UpdateNavProvider<Root, TChild> ThenInclude<TChild>(Expression<Func<T, TChild>> expression) where TChild : class, new()
{
return _ThenInclude(expression);
}
public UpdateNavProvider<Root, TChild> ThenInclude<TChild>(Expression<Func<T, List<TChild>>> expression) where TChild : class, new()
{
return _ThenInclude(expression);
}
public UpdateNavProvider<Root, TChild> ThenInclude<TChild>(Expression<Func<T, TChild>> expression,UpdateNavOptions options) where TChild : class, new()
{
_Options= options;
return _ThenInclude(expression);
}
public UpdateNavProvider<Root, TChild> ThenInclude<TChild>(Expression<Func<T, List<TChild>>> expression, UpdateNavOptions options) where TChild : class, new()
{
_Options = options;
return _ThenInclude(expression);
}
private UpdateNavProvider<Root, TChild> _ThenInclude<TChild>(Expression<Func<T, TChild>> expression) where TChild : class, new()
{ {
InitParentList(); InitParentList();
var name = ExpressionTool.GetMemberName(expression); var name = ExpressionTool.GetMemberName(expression);
@ -52,7 +74,8 @@ namespace SqlSugar
} }
return GetResult<TChild>(); return GetResult<TChild>();
} }
public UpdateNavProvider<Root, TChild> ThenInclude<TChild>(Expression<Func<T, List<TChild>>> expression) where TChild : class, new()
private UpdateNavProvider<Root, TChild> _ThenInclude<TChild>(Expression<Func<T, List<TChild>>> expression) where TChild : class, new()
{ {
InitParentList(); InitParentList();
var name = ExpressionTool.GetMemberName(expression); var name = ExpressionTool.GetMemberName(expression);

View File

@ -17,8 +17,11 @@ namespace SqlSugar
private void InitParentList() private void InitParentList()
{ {
if (_RootList == null) if (_RootList == null)
{
if (_Options != null && _Options.ManyToManyIsUpdateA)
{ {
this._Context.Updateable(_Roots).ExecuteCommand(); this._Context.Updateable(_Roots).ExecuteCommand();
}
_RootList = _ParentList = _Roots.Cast<object>().ToList(); _RootList = _ParentList = _Roots.Cast<object>().ToList();
_ParentEntity = this._Context.EntityMaintenance.GetEntityInfo<Root>(); _ParentEntity = this._Context.EntityMaintenance.GetEntityInfo<Root>();
} }

View File

@ -31,11 +31,33 @@ namespace SqlSugar
result.Context = this.Context; result.Context = this.Context;
return result; return result;
} }
public UpdateNavTask<Root, TChild> Include<TChild>(Expression<Func<Root, TChild>> expression,UpdateNavOptions options) where TChild : class, new()
{
this.Context = UpdateNavProvider._Context;
UpdateNavTask<Root, TChild> result = new UpdateNavTask<Root, TChild>();
Func<UpdateNavProvider<Root, TChild>> func = () => UpdateNavProvider.ThenInclude(expression,options);
result.PreFunc = func;
result.Context = this.Context;
return result;
}
public UpdateNavTask<Root, TChild> Include<TChild>(Expression<Func<Root, List<TChild>>> expression, UpdateNavOptions options) where TChild : class, new()
{
this.Context = UpdateNavProvider._Context;
UpdateNavTask<Root, TChild> result = new UpdateNavTask<Root, TChild>();
Func<UpdateNavProvider<Root, TChild>> func = () => UpdateNavProvider.ThenInclude(expression,options);
result.PreFunc = func;
result.Context = this.Context;
return result;
}
} }
public class UpdateNavTask<Root, T> where T : class, new() where Root : class, new() public class UpdateNavTask<Root, T> where T : class, new() where Root : class, new()
{ {
public SqlSugarProvider Context { get; set; } public SqlSugarProvider Context { get; set; }
public Func<UpdateNavProvider<Root, T>> PreFunc { get; set; } public Func<UpdateNavProvider<Root, T>> PreFunc { get; set; }
#region +1
public UpdateNavTask<Root, TChild> ThenInclude<TChild>(Expression<Func<T, TChild>> expression) where TChild : class, new() public UpdateNavTask<Root, TChild> ThenInclude<TChild>(Expression<Func<T, TChild>> expression) where TChild : class, new()
{ {
UpdateNavTask<Root, TChild> result = new UpdateNavTask<Root, TChild>(); UpdateNavTask<Root, TChild> result = new UpdateNavTask<Root, TChild>();
@ -60,6 +82,38 @@ namespace SqlSugar
{ {
return AsNav().ThenInclude(expression); return AsNav().ThenInclude(expression);
} }
#endregion
#region +2
public UpdateNavTask<Root, TChild> ThenInclude<TChild>(Expression<Func<T, TChild>> expression, UpdateNavOptions options) where TChild : class, new()
{
UpdateNavTask<Root, TChild> result = new UpdateNavTask<Root, TChild>();
Func<UpdateNavProvider<Root, TChild>> func = () => PreFunc().ThenInclude(expression, options);
result.PreFunc = func;
result.Context = this.Context;
return result;
}
public UpdateNavTask<Root, TChild> ThenInclude<TChild>(Expression<Func<T, List<TChild>>> expression, UpdateNavOptions options) where TChild : class, new()
{
UpdateNavTask<Root, TChild> result = new UpdateNavTask<Root, TChild>();
Func<UpdateNavProvider<Root, TChild>> func = () => PreFunc().ThenInclude(expression, options);
result.PreFunc = func;
result.Context = this.Context;
return result;
}
public UpdateNavTask<Root, TChild> Include<TChild>(Expression<Func<Root, TChild>> expression, UpdateNavOptions options) where TChild : class, new()
{
return AsNav().ThenInclude(expression, options);
}
public UpdateNavTask<Root, TChild> Include<TChild>(Expression<Func<Root, List<TChild>>> expression, UpdateNavOptions options) where TChild : class, new()
{
return AsNav().ThenInclude(expression, options);
}
#endregion
public bool ExecuteCommand() public bool ExecuteCommand()
{ {
var hasTran = this.Context.Ado.Transaction != null; var hasTran = this.Context.Ado.Transaction != null;

View File

@ -8,7 +8,12 @@ namespace SqlSugar
{ {
public class DeleteNavOptions public class DeleteNavOptions
{ {
public bool ManyToMayIsDeleteA { get; set; } public bool ManyToManyIsDeleteA { get; set; }
public bool ManyToMayIsDeleteB { get; set; } public bool ManyToManyIsDeleteB { get; set; }
}
public class UpdateNavOptions
{
public bool ManyToManyIsUpdateA { get; set; }
public bool ManyToManyIsUpdateB { get; set; }
} }
} }