From 29bbc2b5d276abb0db699f5969e6c27207ba6a49 Mon Sep 17 00:00:00 2001
From: sunkaixuan <610262374@qq.com>
Date: Sun, 13 Nov 2022 14:53:47 +0800
Subject: [PATCH] Synchronization code
---
.../EntityMaintenance/EntityMaintenance.cs | 4 ++++
.../ExecuteNavProvider/UpdateNavProvider.cs | 9 ++++++++-
.../InsertableProvider/InsertableProvider.cs | 19 ++++++++++++++++++-
.../QueryableProvider/QueryableProvider.cs | 4 ++--
.../SqlSugar/Entities/ConnMoreSettings.cs | 1 +
.../SqlSugar/Entities/DeleteNavOptions.cs | 1 +
.../SqlSugar/Utilities/UtilMethods.cs | 4 +++-
7 files changed, 37 insertions(+), 5 deletions(-)
diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs
index 313179e7c..5de5242e6 100644
--- a/Src/Asp.NetCore2/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs
+++ b/Src/Asp.NetCore2/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs
@@ -151,6 +151,10 @@ namespace SqlSugar
/// the text contents of this XML element node
public string GetXElementNodeValue(Type entityType, string nodeAttributeName)
{
+ if (this.Context.CurrentConnectionConfig?.MoreSettings?.IsNoReadXmlDescription == true)
+ {
+ return "";
+ }
var path = entityType.Assembly.Location;
if (string.IsNullOrEmpty(path))
{
diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/ExecuteNavProvider/UpdateNavProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/ExecuteNavProvider/UpdateNavProvider.cs
index 57eaab3cc..ee4605070 100644
--- a/Src/Asp.NetCore2/SqlSugar/Abstract/ExecuteNavProvider/UpdateNavProvider.cs
+++ b/Src/Asp.NetCore2/SqlSugar/Abstract/ExecuteNavProvider/UpdateNavProvider.cs
@@ -63,7 +63,14 @@ namespace SqlSugar
{
Check.ExceptionEasy($"{name} no navigate attribute", $"{this._ParentEntity.EntityName}的属性{name}没有导航属性");
}
- UpdateRoot(isRoot, nav);
+ if (_RootOptions != null && _RootOptions.IsDisableUpdateRoot)
+ {
+ //Future
+ }
+ else
+ {
+ UpdateRoot(isRoot, nav);
+ }
IsFirst = false;
if (nav.Navigat.NavigatType == NavigateType.OneToOne || nav.Navigat.NavigatType == NavigateType.ManyToOne)
{
diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs
index 368a28e5b..bb89e22e6 100644
--- a/Src/Asp.NetCore2/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs
+++ b/Src/Asp.NetCore2/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs
@@ -301,7 +301,24 @@ namespace SqlSugar
return 0;
}
string sql = _ExecuteReturnIdentity();
- var result =await Ado.GetIntAsync(sql, InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray());
+ var result = 0;
+ if (InsertBuilder.IsOleDb)
+ {
+ var isAuto = false;
+ if (this.Context.CurrentConnectionConfig.IsAutoCloseConnection)
+ {
+ isAuto = true;
+ this.Context.CurrentConnectionConfig.IsAutoCloseConnection = false;
+ }
+ result = Ado.GetInt(sql.Split(';').First(), InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray());
+ result = Ado.GetInt(sql.Split(';').Last(), InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray());
+ if (isAuto)
+ {
+ this.Ado.Close();
+ this.Context.CurrentConnectionConfig.IsAutoCloseConnection = isAuto;
+ }
+ }
+ result =await Ado.GetIntAsync(sql, InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray());
After(sql, result);
return result;
}
diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs
index 2fa6ff03a..73bc17fda 100644
--- a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs
+++ b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs
@@ -1019,8 +1019,8 @@ namespace SqlSugar
public virtual ISugarQueryable MergeTable()
{
Check.Exception(this.MapperAction != null || this.MapperActionWithCache != null,ErrorMessage.GetThrowMessage( "'Mapper’ needs to be written after ‘MergeTable’ ", "Mapper 只能在 MergeTable 之后使用"));
- Check.Exception(this.QueryBuilder.SelectValue.IsNullOrEmpty(),ErrorMessage.GetThrowMessage( "MergeTable need to use Queryable.Select Method .", "使用MergeTable之前必须要有Queryable.Select方法"));
- Check.Exception(this.QueryBuilder.Skip > 0 || this.QueryBuilder.Take > 0 || this.QueryBuilder.OrderByValue.HasValue(),ErrorMessage.GetThrowMessage( "MergeTable Queryable cannot Take Skip OrderBy PageToList ", "使用 MergeTable不能有 Take Skip OrderBy PageToList 等操作,你可以在Mergetable之后操作"));
+ //Check.Exception(this.QueryBuilder.SelectValue.IsNullOrEmpty(),ErrorMessage.GetThrowMessage( "MergeTable need to use Queryable.Select Method .", "使用MergeTable之前必须要有Queryable.Select方法"));
+ //Check.Exception(this.QueryBuilder.Skip > 0 || this.QueryBuilder.Take > 0 || this.QueryBuilder.OrderByValue.HasValue(),ErrorMessage.GetThrowMessage( "MergeTable Queryable cannot Take Skip OrderBy PageToList ", "使用 MergeTable不能有 Take Skip OrderBy PageToList 等操作,你可以在Mergetable之后操作"));
var sqlobj = this._ToSql();
var index = QueryBuilder.WhereIndex + 1;
var result = this.Context.Queryable().AS(SqlBuilder.GetPackTable(sqlobj.Key, "MergeTable")).AddParameters(sqlobj.Value).Select("*").With(SqlWith.Null);
diff --git a/Src/Asp.NetCore2/SqlSugar/Entities/ConnMoreSettings.cs b/Src/Asp.NetCore2/SqlSugar/Entities/ConnMoreSettings.cs
index f579dcb09..d36a02442 100644
--- a/Src/Asp.NetCore2/SqlSugar/Entities/ConnMoreSettings.cs
+++ b/Src/Asp.NetCore2/SqlSugar/Entities/ConnMoreSettings.cs
@@ -17,5 +17,6 @@ namespace SqlSugar
public int DefaultCacheDurationInSeconds { get; set; }
public bool? TableEnumIsString { get; set; }
public DateTime? DbMinDate { get; set; } = Convert.ToDateTime("1900-01-01");
+ public bool IsNoReadXmlDescription { get; set; }
}
}
diff --git a/Src/Asp.NetCore2/SqlSugar/Entities/DeleteNavOptions.cs b/Src/Asp.NetCore2/SqlSugar/Entities/DeleteNavOptions.cs
index dfc3a4464..a079a278e 100644
--- a/Src/Asp.NetCore2/SqlSugar/Entities/DeleteNavOptions.cs
+++ b/Src/Asp.NetCore2/SqlSugar/Entities/DeleteNavOptions.cs
@@ -27,6 +27,7 @@ namespace SqlSugar
public string[] IgnoreColumns { get; set; }
public string[] UpdateColumns { get; set; }
public bool IsInsertRoot { get; set; }
+ public bool IsDisableUpdateRoot { get; set; }
public bool IsDiffLogEvent { get; set; }
public object DiffLogBizData { get; set; }
}
diff --git a/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs b/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs
index b1b89f11b..6e34025aa 100644
--- a/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs
+++ b/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs
@@ -173,7 +173,9 @@ namespace SqlSugar
IsWithNoLockQuery = it.MoreSettings.IsWithNoLockQuery,
TableEnumIsString = it.MoreSettings.TableEnumIsString,
DisableMillisecond = it.MoreSettings.DisableMillisecond,
- DbMinDate=it.MoreSettings.DbMinDate
+ DbMinDate=it.MoreSettings.DbMinDate,
+ IsNoReadXmlDescription=it.MoreSettings.IsNoReadXmlDescription
+
},
SqlMiddle = it.SqlMiddle == null ? null : new SqlMiddle
{