mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-22 20:13:41 +08:00
Db.UpdateNav & OneToOne & QueryQueryFilter
This commit is contained in:
@@ -8,6 +8,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
public partial class UpdateNavProvider<Root, T> where T : class, new() where Root : class, new()
|
public partial class UpdateNavProvider<Root, T> where T : class, new() where Root : class, new()
|
||||||
{
|
{
|
||||||
|
protected bool IsDeleted { get; set; }
|
||||||
private void UpdateOneToOne<TChild>(string name, EntityColumnInfo nav) where TChild : class, new()
|
private void UpdateOneToOne<TChild>(string name, EntityColumnInfo nav) where TChild : class, new()
|
||||||
{
|
{
|
||||||
var parentEntity = _ParentEntity;
|
var parentEntity = _ParentEntity;
|
||||||
@@ -16,6 +17,7 @@ namespace SqlSugar
|
|||||||
var parentColumn = parentEntity.Columns.FirstOrDefault(it => it.PropertyName == nav.Navigat.Name);
|
var parentColumn = parentEntity.Columns.FirstOrDefault(it => it.PropertyName == nav.Navigat.Name);
|
||||||
var parentPkColumn = parentEntity.Columns.FirstOrDefault(it => it.IsPrimarykey);
|
var parentPkColumn = parentEntity.Columns.FirstOrDefault(it => it.IsPrimarykey);
|
||||||
var thisEntity = this._Context.EntityMaintenance.GetEntityInfo<TChild>();
|
var thisEntity = this._Context.EntityMaintenance.GetEntityInfo<TChild>();
|
||||||
|
IsDeleted = thisEntity.Columns.Any(it => it.PropertyName.EqualCase("isdeleted") || it.PropertyName.EqualCase("isdelete"));
|
||||||
EntityColumnInfo thisPkColumn = GetPkColumnByNav(thisEntity, nav);
|
EntityColumnInfo thisPkColumn = GetPkColumnByNav(thisEntity, nav);
|
||||||
Check.ExceptionEasy(thisPkColumn == null, $" Navigate {parentEntity.EntityName} : {name} is error ", $"导航实体 {parentEntity.EntityName} 属性 {name} 配置错误");
|
Check.ExceptionEasy(thisPkColumn == null, $" Navigate {parentEntity.EntityName} : {name} is error ", $"导航实体 {parentEntity.EntityName} 属性 {name} 配置错误");
|
||||||
Check.ExceptionEasy(nav.Navigat.WhereSql.HasValue(), $" {name} Navigate(NavType,WhereSql) no support update ", $"导航一对一 {name} 配置了 Sql变量 不支持更新");
|
Check.ExceptionEasy(nav.Navigat.WhereSql.HasValue(), $" {name} Navigate(NavType,WhereSql) no support update ", $"导航一对一 {name} 配置了 Sql变量 不支持更新");
|
||||||
|
@@ -84,8 +84,15 @@ namespace SqlSugar
|
|||||||
Check.ExceptionEasy(exp == null, "UpdateOptions.CurrentFunc is error", "UpdateOptions.CurrentFunc参数设置错误");
|
Check.ExceptionEasy(exp == null, "UpdateOptions.CurrentFunc is error", "UpdateOptions.CurrentFunc参数设置错误");
|
||||||
var com = exp.Compile();
|
var com = exp.Compile();
|
||||||
com(updateable);
|
com(updateable);
|
||||||
|
if (IsDeleted)
|
||||||
|
{
|
||||||
|
updateable.PageSize(1).EnableQueryFilter().ExecuteCommand();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
updateable.ExecuteCommand();
|
updateable.ExecuteCommand();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if (pkColumn.IsPrimarykey == false)
|
else if (pkColumn.IsPrimarykey == false)
|
||||||
{
|
{
|
||||||
var pk= this._Context.EntityMaintenance.GetEntityInfo<TChild>().Columns.Where(it => it.IsPrimarykey);
|
var pk= this._Context.EntityMaintenance.GetEntityInfo<TChild>().Columns.Where(it => it.IsPrimarykey);
|
||||||
@@ -94,12 +101,26 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
ignoreColumns.AddRange(pk.Select(it=>it.PropertyName));
|
ignoreColumns.AddRange(pk.Select(it=>it.PropertyName));
|
||||||
}
|
}
|
||||||
|
if (IsDeleted)
|
||||||
|
{
|
||||||
|
x.AsUpdateable.IgnoreColumns(ignoreColumns.ToArray()).PageSize(1).EnableQueryFilter().ExecuteCommand();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
x.AsUpdateable.IgnoreColumns(ignoreColumns.ToArray()).ExecuteCommand();
|
x.AsUpdateable.IgnoreColumns(ignoreColumns.ToArray()).ExecuteCommand();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (IsDeleted)
|
||||||
|
{
|
||||||
|
x.AsUpdateable.PageSize(1).EnableQueryFilter().ExecuteCommand();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
x.AsUpdateable.ExecuteCommand();
|
x.AsUpdateable.ExecuteCommand();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
InitData(pkColumn, insertData);
|
InitData(pkColumn, insertData);
|
||||||
if (_NavigateType == NavigateType.OneToMany)
|
if (_NavigateType == NavigateType.OneToMany)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user