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 {