From c80e57a4e819d5c6a7db94b7f8b305d038c2b456 Mon Sep 17 00:00:00 2001 From: Diego <2248356998@qq.com> Date: Wed, 25 Jun 2025 11:17:04 +0800 Subject: [PATCH] build: 10.8.24 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix: 变量离线后再次上线,如果值不变,会导致在线状态不刷新 fix: s7离线恢复时,可能触发多次协议握手导致异常 --- LICENSE | 2 +- .../Common/DisposeBase.cs | 5 -- .../Configuration/Config.cs | 2 - .../Extension/ProcessHelper.cs | 6 -- .../Extension/StringHelper.cs | 41 ---------- .../Reflection/IIndexAccessor.cs | 15 ---- .../Reflection/Reflect.cs | 7 +- .../ThingsGateway.NewLife.X/Xml/XmlConfig.cs | 1 - .../Extensions/GenericExtensions.cs | 2 - .../CodeFirstProvider/CodeFirstProvider.cs | 6 +- .../DeleteProvider/DeleteableProvider.cs | 4 +- .../Sugar/Abstract/DynamicBuilder/Helper.cs | 4 +- .../EntityMaintenance/EntityMaintenance.cs | 2 +- .../InsertableProvider/InsertableHelper.cs | 8 +- .../InsertableProvider/SubInserable.cs | 11 +-- .../QueryableProvider/MappingFieldsHelper.cs | 8 +- .../QueryableProvider/QueryableExecuteSql.cs | 42 +++++----- .../QueryableExecuteSqlAsync.cs | 42 +++++----- .../QueryableProvider/QueryableHelper.cs | 76 +++++++++---------- .../QueryableProvider/QueryableProvider.cs | 28 +++---- .../QueryableProvider02-05.cs | 8 +- .../SqlBuilderProvider/DeleteBuilder.cs | 4 +- .../SqlBuilderProvider/QueryBuilder.cs | 6 +- .../SugarProvider/SqlSugarProvider.cs | 18 +---- .../UpdateProvider/UpdateableProvider.cs | 28 +++---- .../Sugar/Entities/EntityInfo.cs | 2 +- .../Entities/Mapping/SugarMappingAttribute.cs | 4 +- .../ExpressionsToSql/Common/ExpressionTool.cs | 4 +- .../ExpressionsToSql/DbMethods/SqlFunc.cs | 22 +++--- .../ResolveItems/MapperExpressionResolve.cs | 6 +- .../ResolveItems/MemberNoExpressionResolve.cs | 2 +- .../ResolveItems/NewArrayExpessionResolve.cs | 2 +- .../Sugar/Interface/IQueryable.cs | 16 ++-- .../Sugar/Interface/ISqlSugarClient.cs | 5 -- .../Sugar/Interface/ISubInsertable.cs | 2 - .../Sugar/Interface/IUpdateable.cs | 10 +-- .../Json2Sql/JsonModels/SelectFieldModel.cs | 3 - .../Json2Sql/ModelToSql/SelectModelToSql.cs | 4 +- .../Sugar/Json2Sql/ModelToSql/SqlPart.cs | 2 +- .../Provider/Queryable/AppendSelect.cs | 10 +-- .../Realization/Dm/CodeFirst/DmCodeFirst.cs | 2 +- .../Dm/DbMaintenance/DmDbMaintenance.cs | 4 +- .../Realization/Dm/Queryable/DmQueryable.cs | 4 +- .../Kdbndp/CodeFirst/KdbndpCodeFirst.cs | 2 +- .../Kdbndp/Queryable/KdbndpQueryable.cs | 2 +- .../MySql/CodeFirst/MySqlCodeFirst.cs | 2 +- .../MySql/Queryable/MySqlQueryable.cs | 4 +- .../DbMaintenance/OracleDbMaintenance.cs | 4 +- .../Oscar/CodeFirst/OscarCodeFirst.cs | 2 +- .../Oscar/Queryable/OscarQueryable.cs | 4 +- .../CodeFirst/PostgreSQLCodeFirst.cs | 2 +- .../Queryable/PostgreSqlQueryable.cs | 4 +- .../QuestDB/CodeFirst/QuestDBCodeFirst.cs | 2 +- .../QuestDB/Queryable/QuestDBQueryable.cs | 4 +- .../Sqlite/CodeFirst/SqliteCodeFirst.cs | 2 +- .../Sqlite/Queryable/SqliteQueryable.cs | 4 +- .../Sugar/SqlSugarClient.cs | 10 --- .../Sugar/SqlSugarScope.cs | 11 --- .../Sugar/Utilities/UtilMethods.cs | 5 -- .../Queryable/TDengineSqlQueryable.cs | 4 +- src/Directory.Build.props | 4 +- .../Device/DeviceBase.cs | 31 +++++++- .../Device/DeviceExtension.cs | 2 +- .../Device/IDevice.cs | 4 +- .../ThingsGateway.Foundation.csproj | 4 +- .../Variable/IVariable.cs | 1 + .../Variable/VariableClass.cs | 3 + .../Driver/Collect/CollectFoundationBase.cs | 23 +++++- .../Model/DeviceRunTime.cs | 6 ++ .../Model/VariableRunTime.cs | 11 ++- .../ThingsGateway.Gateway.Application.csproj | 4 +- .../Variable/ValueTransformConfigPage.razor | 8 +- .../ValueTransformConfigPage.razor.cs | 3 +- .../S7/SiemensS7Master.cs | 25 +++--- .../Dlt645_2007/Dlt645_2007Master.cs | 7 ++ .../ModbusMaster/ModbusMaster.cs | 5 ++ .../ModbusSlave/ModbusSlave.cs | 12 +-- .../OpcDaMaster/OpcDaMaster.cs | 35 ++++++++- .../OpcUaMaster/OpcUaMaster.cs | 30 +++++++- .../SiemensS7Master/SiemensS7Master.cs | 6 ++ .../ThingsGateway.Upgrade.csproj | 2 +- src/Version.props | 2 +- 82 files changed, 380 insertions(+), 396 deletions(-) delete mode 100644 src/Admin/ThingsGateway.NewLife.X/Reflection/IIndexAccessor.cs diff --git a/LICENSE b/LICENSE index d08d44d4e..ba546c6ab 100644 --- a/LICENSE +++ b/LICENSE @@ -85,7 +85,7 @@ or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate - as of the date such litigation is filed. + as of the date such litigation is field. 4. Cachetribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without diff --git a/src/Admin/ThingsGateway.NewLife.X/Common/DisposeBase.cs b/src/Admin/ThingsGateway.NewLife.X/Common/DisposeBase.cs index addf50bf1..4d5ac4c39 100644 --- a/src/Admin/ThingsGateway.NewLife.X/Common/DisposeBase.cs +++ b/src/Admin/ThingsGateway.NewLife.X/Common/DisposeBase.cs @@ -79,11 +79,6 @@ public abstract class DisposeBase : IDisposable2 OnDisposed?.Invoke(this, EventArgs.Empty); } - ///// 释放资源,参数表示是否由Dispose调用。该方法保证OnDispose只被调用一次! - ///// - //[Obsolete("=>Dispose")] - //protected virtual void OnDispose(Boolean disposing) { } - /// 析构函数 /// /// 如果忘记调用Dispose,这里会释放非托管资源。 diff --git a/src/Admin/ThingsGateway.NewLife.X/Configuration/Config.cs b/src/Admin/ThingsGateway.NewLife.X/Configuration/Config.cs index 79df08e32..716be2dcb 100644 --- a/src/Admin/ThingsGateway.NewLife.X/Configuration/Config.cs +++ b/src/Admin/ThingsGateway.NewLife.X/Configuration/Config.cs @@ -95,7 +95,6 @@ public class Config where TConfig : Config, new() #region 属性 /// 是否新的配置文件 [XmlIgnore, IgnoreDataMember] - //[Obsolete("=>_Provider.IsNew")] public Boolean IsNew => Provider?.IsNew ?? false; #endregion @@ -104,7 +103,6 @@ public class Config where TConfig : Config, new() protected virtual void OnLoaded() { } /// 保存到配置文件中去 - //[Obsolete("=>Provider.Save")] public virtual void Save() => Provider?.Save(this); #endregion } \ No newline at end of file diff --git a/src/Admin/ThingsGateway.NewLife.X/Extension/ProcessHelper.cs b/src/Admin/ThingsGateway.NewLife.X/Extension/ProcessHelper.cs index 9ff38c12a..058ed9168 100644 --- a/src/Admin/ThingsGateway.NewLife.X/Extension/ProcessHelper.cs +++ b/src/Admin/ThingsGateway.NewLife.X/Extension/ProcessHelper.cs @@ -41,12 +41,6 @@ public static class ProcessHelper return pname; } - /// 获取二级进程名 - /// - /// - [Obsolete("=>GetProcessName", true)] - public static String GetProcessName2(this Process process) => GetProcessName(process); - ///// 根据名称获取进程。支持dotnet/java ///// ///// diff --git a/src/Admin/ThingsGateway.NewLife.X/Extension/StringHelper.cs b/src/Admin/ThingsGateway.NewLife.X/Extension/StringHelper.cs index a46d41162..27889d0d5 100644 --- a/src/Admin/ThingsGateway.NewLife.X/Extension/StringHelper.cs +++ b/src/Admin/ThingsGateway.NewLife.X/Extension/StringHelper.cs @@ -236,25 +236,6 @@ public static class StringHelper return sb.Return(true); } - ///// 把一个列表组合成为一个字符串,默认逗号分隔 - ///// - ///// 组合分隔符,默认逗号 - ///// 把对象转为字符串的委托 - ///// - //[Obsolete] - //public static String Join(this IEnumerable value, String separator, Func? func) - //{ - // var sb = Pool.StringBuilder.Get(); - // if (value != null) - // { - // if (func == null) func = obj => obj + ""; - // foreach (var item in value) - // { - // sb.Separate(separator).Append(func(item)); - // } - // } - // return sb.Put(true); - //} /// 把一个列表组合成为一个字符串,默认逗号分隔 /// @@ -301,28 +282,6 @@ public static class StringHelper return encoding.GetBytes(value); } - /// 格式化字符串。特别支持无格式化字符串的时间参数 - /// 格式字符串 - /// 参数 - /// - [Obsolete("建议使用插值字符串")] - public static String F(this String value, params Object?[] args) - { - if (String.IsNullOrEmpty(value)) return value; - - // 特殊处理时间格式化。这些年,无数项目实施因为时间格式问题让人发狂 - for (var i = 0; i < args.Length; i++) - { - if (args[i] is DateTime dt) - { - // 没有写格式化字符串的时间参数,一律转为标准时间字符串 - if (value.Contains("{" + i + "}")) args[i] = dt.ToFullString(); - } - } - - return String.Format(value, args); - } - /// 指定输入是否匹配目标表达式,支持*匹配 /// 匹配表达式 /// 输入字符串 diff --git a/src/Admin/ThingsGateway.NewLife.X/Reflection/IIndexAccessor.cs b/src/Admin/ThingsGateway.NewLife.X/Reflection/IIndexAccessor.cs deleted file mode 100644 index 620701e9a..000000000 --- a/src/Admin/ThingsGateway.NewLife.X/Reflection/IIndexAccessor.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace ThingsGateway.NewLife.Reflection -{ - /// - /// 索引器接访问口。 - /// 该接口用于通过名称快速访问对象属性或字段(属性优先)。 - /// - //[Obsolete("=>IIndex")] - public interface IIndexAccessor - { - /// 获取/设置 指定名称的属性或字段的值 - /// 名称 - /// - Object this[String name] { get; set; } - } -} \ No newline at end of file diff --git a/src/Admin/ThingsGateway.NewLife.X/Reflection/Reflect.cs b/src/Admin/ThingsGateway.NewLife.X/Reflection/Reflect.cs index 1146cac0a..6d7b751cd 100644 --- a/src/Admin/ThingsGateway.NewLife.X/Reflection/Reflect.cs +++ b/src/Admin/ThingsGateway.NewLife.X/Reflection/Reflect.cs @@ -521,12 +521,7 @@ public static class Reflect /// public static IEnumerable GetAllSubclasses(this Type baseType) => Provider.GetAllSubclasses(baseType); - ///// 在所有程序集中查找指定基类或接口的子类实现 - ///// 基类或接口 - ///// 是否加载为加载程序集 - ///// - //[Obsolete] - //public static IEnumerable GetAllSubclasses(this Type baseType, Boolean isLoadAssembly) => Provider.GetAllSubclasses(baseType, isLoadAssembly); + #endregion #region 辅助方法 diff --git a/src/Admin/ThingsGateway.NewLife.X/Xml/XmlConfig.cs b/src/Admin/ThingsGateway.NewLife.X/Xml/XmlConfig.cs index ca7e9de1c..fea1aca42 100644 --- a/src/Admin/ThingsGateway.NewLife.X/Xml/XmlConfig.cs +++ b/src/Admin/ThingsGateway.NewLife.X/Xml/XmlConfig.cs @@ -20,7 +20,6 @@ namespace ThingsGateway.NewLife.Xml; /// 用户也可以通过配置实体类的静态构造函数修改基类的来动态配置加载信息。 /// /// -//[Obsolete("=>Config")] public class XmlConfig : DisposeBase where TConfig : XmlConfig, new() { #region 静态 diff --git a/src/Admin/ThingsGateway.Razor/Extensions/GenericExtensions.cs b/src/Admin/ThingsGateway.Razor/Extensions/GenericExtensions.cs index 19497829b..a3f1d09a2 100644 --- a/src/Admin/ThingsGateway.Razor/Extensions/GenericExtensions.cs +++ b/src/Admin/ThingsGateway.Razor/Extensions/GenericExtensions.cs @@ -10,8 +10,6 @@ using System.Reflection; -using ThingsGateway.NewLife.Caching; - namespace ThingsGateway.Extension.Generic; /// diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs index 2e0c46f61..25d254f60 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs @@ -355,7 +355,7 @@ namespace ThingsGateway.SqlSugar { var querybulder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); querybulder.Context = this.Context; - var fileds = item.IndexFields + var fields = item.IndexFields .Select(it => { var dbColumn = entityInfo.Columns.FirstOrDefault(z => z.PropertyName == it.Key); @@ -366,7 +366,7 @@ namespace ThingsGateway.SqlSugar return new KeyValuePair(dbColumn.DbColumnName, it.Value); }) .Select(it => querybulder.GetTranslationColumnName(it.Key) + " " + it.Value).ToArray(); - this.Context.DbMaintenance.CreateIndex(entityInfo.DbTableName, fileds, item.IndexName + include, item.IsUnique); + this.Context.DbMaintenance.CreateIndex(entityInfo.DbTableName, fields, item.IndexName + include, item.IsUnique); } } } @@ -384,7 +384,7 @@ namespace ThingsGateway.SqlSugar DbColumnInfo dbColumnInfo = EntityColumnToDbColumn(entityInfo, tableName, item); columns.Add(dbColumnInfo); } - if (entityInfo.IsCreateTableFiledSort) + if (entityInfo.IsCreateTableFieldSort) { columns = columns.OrderBy(c => c.CreateTableFieldSort).ToList(); columns = columns.OrderBy(it => it.IsPrimarykey ? 0 : 1).ToList(); diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DeleteProvider/DeleteableProvider.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DeleteProvider/DeleteableProvider.cs index 8d72729f5..083a648b2 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DeleteProvider/DeleteableProvider.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DeleteProvider/DeleteableProvider.cs @@ -154,7 +154,7 @@ namespace ThingsGateway.SqlSugar if (DeleteBuilder.BigDataInValues == null) DeleteBuilder.BigDataInValues = new List(); DeleteBuilder.BigDataInValues.AddRange(primaryKeyValues); - DeleteBuilder.BigDataFiled = primaryField; + DeleteBuilder.BigDataField = primaryField; } } else @@ -520,7 +520,7 @@ namespace ThingsGateway.SqlSugar if (DeleteBuilder.BigDataInValues == null) DeleteBuilder.BigDataInValues = new List(); DeleteBuilder.BigDataInValues.AddRange(primaryKeyValues.Select(it => (object)it)); - DeleteBuilder.BigDataFiled = primaryField; + DeleteBuilder.BigDataField = primaryField; } return this; } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DynamicBuilder/Helper.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DynamicBuilder/Helper.cs index dfd26a3ae..5a2e40035 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DynamicBuilder/Helper.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DynamicBuilder/Helper.cs @@ -35,7 +35,7 @@ namespace ThingsGateway.SqlSugar attributeType.GetProperty(nameof(SugarTable.TableDescription)) , attributeType.GetProperty(nameof(SugarTable.IsDisabledUpdateAll)) , attributeType.GetProperty(nameof(SugarTable.IsDisabledDelete)), - attributeType.GetProperty(nameof(SugarTable.IsCreateTableFiledSort)), + attributeType.GetProperty(nameof(SugarTable.IsCreateTableFieldSort)), attributeType.GetProperty(nameof(SugarTable.Discrimator)) } , new object[] { @@ -43,7 +43,7 @@ namespace ThingsGateway.SqlSugar sugarTable.TableDescription , sugarTable.IsDisabledUpdateAll, sugarTable.IsDisabledDelete, - sugarTable.IsCreateTableFiledSort, + sugarTable.IsCreateTableFieldSort, sugarTable.Discrimator }); return attributeBuilder; diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/EntityMaintenance/EntityMaintenance.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/EntityMaintenance/EntityMaintenance.cs index 71878f4a0..a73653a8d 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/EntityMaintenance/EntityMaintenance.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/EntityMaintenance/EntityMaintenance.cs @@ -63,7 +63,7 @@ namespace ThingsGateway.SqlSugar result.TableDescription = sugarTable.TableDescription.ToSqlFilter(); result.IsDisabledUpdateAll = sugarTable.IsDisabledUpdateAll; result.IsDisabledDelete = sugarTable.IsDisabledDelete; - result.IsCreateTableFiledSort = sugarTable.IsCreateTableFiledSort; + result.IsCreateTableFieldSort = sugarTable.IsCreateTableFieldSort; result.Discrimator = sugarTable.Discrimator; } var indexs = type.GetCustomAttributes(typeof(SugarIndexAttribute)); diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/InsertableProvider/InsertableHelper.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/InsertableProvider/InsertableHelper.cs index f43716fb0..ec332677a 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/InsertableProvider/InsertableHelper.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/InsertableProvider/InsertableHelper.cs @@ -566,11 +566,11 @@ namespace ThingsGateway.SqlSugar foreach (var item in this.EntityInfo.Columns.Where(it => it.IsIgnore == false && GetPrimaryKeys().Any(pk => pk.Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase)))) { var fielddName = item.DbColumnName; - var filedObject = this.EntityInfo.Columns.FirstOrDefault(it => it.PropertyName == item.PropertyName).PropertyInfo.GetValue(this.InsertObjs.Last(), null); - var fieldValue = filedObject.ObjToString(); - if (filedObject != null && filedObject.GetType() != typeof(string) && this.Context.CurrentConnectionConfig.DbType == DbType.PostgreSQL) + var fieldObject = this.EntityInfo.Columns.FirstOrDefault(it => it.PropertyName == item.PropertyName).PropertyInfo.GetValue(this.InsertObjs.Last(), null); + var fieldValue = fieldObject.ObjToString(); + if (fieldObject != null && fieldObject.GetType() != typeof(string) && this.Context.CurrentConnectionConfig.DbType == DbType.PostgreSQL) { - cons.Add(new ConditionalModel() { ConditionalType = ConditionalType.Equal, FieldName = fielddName, FieldValue = fieldValue, FieldValueConvertFunc = it => UtilMethods.ChangeType2(it, filedObject.GetType()) }); + cons.Add(new ConditionalModel() { ConditionalType = ConditionalType.Equal, FieldName = fielddName, FieldValue = fieldValue, FieldValueConvertFunc = it => UtilMethods.ChangeType2(it, fieldObject.GetType()) }); } else { diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/InsertableProvider/SubInserable.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/InsertableProvider/SubInserable.cs index 7d8d424ae..bc77c6caa 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/InsertableProvider/SubInserable.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/InsertableProvider/SubInserable.cs @@ -73,11 +73,6 @@ namespace ThingsGateway.SqlSugar return resul; } - [Obsolete("use ExecuteCommand")] - public object ExecuteReturnPrimaryKey() - { - return ExecuteCommand(); - } public async Task ExecuteCommandAsync() { @@ -137,11 +132,7 @@ namespace ThingsGateway.SqlSugar return 0; } } - [Obsolete("use ExecuteCommandAsync")] - public Task ExecuteReturnPrimaryKeyAsync() - { - return Task.FromResult(ExecuteReturnPrimaryKey()); - } + private bool IsIdEntity(EntityInfo entity) { diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/MappingFieldsHelper.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/MappingFieldsHelper.cs index 9c095eda0..c45c988e0 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/MappingFieldsHelper.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/MappingFieldsHelper.cs @@ -9,17 +9,17 @@ namespace ThingsGateway.SqlSugar public EntityInfo NavEntity { get; set; } public EntityInfo RootEntity { get; set; } - public MappingFieldsInfo GetMappings(Expression thisFiled, Expression mappingFiled) + public MappingFieldsInfo GetMappings(Expression thisField, Expression mappingField) { MappingFieldsInfo mappingFields = new MappingFieldsInfo(); var pkName = ""; - if ((mappingFiled as LambdaExpression).Body is UnaryExpression) + if ((mappingField as LambdaExpression).Body is UnaryExpression) { - pkName = (((mappingFiled as LambdaExpression).Body as UnaryExpression).Operand as MemberExpression).Member.Name; + pkName = (((mappingField as LambdaExpression).Body as UnaryExpression).Operand as MemberExpression).Member.Name; } else { - pkName = ((mappingFiled as LambdaExpression).Body as MemberExpression).Member.Name; + pkName = ((mappingField as LambdaExpression).Body as MemberExpression).Member.Name; } return mappingFields; } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableExecuteSql.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableExecuteSql.cs index 3508f3303..22c530cb2 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableExecuteSql.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableExecuteSql.cs @@ -577,7 +577,7 @@ namespace ThingsGateway.SqlSugar var result = new List(); throw new Exception("开发中"); } - public List SetContext(Expression> thisFiled, Expression> mappingFiled, ParameterT parameter) + public List SetContext(Expression> thisField, Expression> mappingField, ParameterT parameter) { if (parameter == null) { @@ -588,15 +588,15 @@ namespace ThingsGateway.SqlSugar var queryableContext = this.Context.TempItems["Queryable_To_Context"] as MapperContext; var list = queryableContext.list; var pkName = ""; - if ((mappingFiled as LambdaExpression).Body is UnaryExpression) + if ((mappingField as LambdaExpression).Body is UnaryExpression) { - pkName = (((mappingFiled as LambdaExpression).Body as UnaryExpression).Operand as MemberExpression).Member.Name; + pkName = (((mappingField as LambdaExpression).Body as UnaryExpression).Operand as MemberExpression).Member.Name; } else { - pkName = ((mappingFiled as LambdaExpression).Body as MemberExpression).Member.Name; + pkName = ((mappingField as LambdaExpression).Body as MemberExpression).Member.Name; } - var key = thisFiled.ToString() + mappingFiled.ToString() + typeof(ParameterT).FullName + typeof(T).FullName; + var key = thisField.ToString() + mappingField.ToString() + typeof(ParameterT).FullName + typeof(T).FullName; var ids = list.Where(it => it != null).Select(it => it.GetType().GetProperty(pkName).GetValue(it)).Distinct().ToArray(); if (queryableContext.TempChildLists == null) queryableContext.TempChildLists = new Dictionary(); @@ -610,25 +610,25 @@ namespace ThingsGateway.SqlSugar queryableContext.TempChildLists = new Dictionary(); this.Context.Utilities.PageEach(ids, 200, pageIds => { - result.AddRange(this.Clone().In(thisFiled, pageIds).ToList()); + result.AddRange(this.Clone().In(thisField, pageIds).ToList()); }); queryableContext.TempChildLists[key] = result; } var name = ""; - if ((thisFiled as LambdaExpression).Body is UnaryExpression) + if ((thisField as LambdaExpression).Body is UnaryExpression) { - name = (((thisFiled as LambdaExpression).Body as UnaryExpression).Operand as MemberExpression).Member.Name; + name = (((thisField as LambdaExpression).Body as UnaryExpression).Operand as MemberExpression).Member.Name; } else { - name = ((thisFiled as LambdaExpression).Body as MemberExpression).Member.Name; + name = ((thisField as LambdaExpression).Body as MemberExpression).Member.Name; } var pkValue = parameter.GetType().GetProperty(pkName).GetValue(parameter); result = result.Where(it => it.GetType().GetProperty(name).GetValue(it).ObjToString() == pkValue.ObjToString()).ToList(); return result; } - public List SetContext(Expression> thisFiled1, Expression> mappingFiled1, - Expression> thisFiled2, Expression> mappingFiled2, + public List SetContext(Expression> thisField1, Expression> mappingField1, + Expression> thisField2, Expression> mappingField2, ParameterT parameter) { if (parameter == null) @@ -640,22 +640,22 @@ namespace ThingsGateway.SqlSugar List result = new List(); var queryableContext = this.Context.TempItems["Queryable_To_Context"] as MapperContext; var list = queryableContext.list; - var key = thisFiled1.ToString() + mappingFiled1.ToString() + - thisFiled2.ToString() + mappingFiled2.ToString() + + var key = thisField1.ToString() + mappingField1.ToString() + + thisField2.ToString() + mappingField2.ToString() + typeof(ParameterT).FullName + typeof(T).FullName; MappingFieldsHelper fieldsHelper = new MappingFieldsHelper(); var mappings = new List() { new MappingFieldsExpression(){ - LeftColumnExpression=thisFiled1, - LeftEntityColumn=leftEntity.Columns.First(it=>it.PropertyName==ExpressionTool.GetMemberName(thisFiled1)), - RightColumnExpression=mappingFiled1, - RightEntityColumn=rightEntity.Columns.First(it=>it.PropertyName==ExpressionTool.GetMemberName(mappingFiled1)) + LeftColumnExpression=thisField1, + LeftEntityColumn=leftEntity.Columns.First(it=>it.PropertyName==ExpressionTool.GetMemberName(thisField1)), + RightColumnExpression=mappingField1, + RightEntityColumn=rightEntity.Columns.First(it=>it.PropertyName==ExpressionTool.GetMemberName(mappingField1)) }, new MappingFieldsExpression(){ - LeftColumnExpression=thisFiled2, - LeftEntityColumn=leftEntity.Columns.First(it=>it.PropertyName==ExpressionTool.GetMemberName(thisFiled2)), - RightColumnExpression=mappingFiled2, - RightEntityColumn=rightEntity.Columns.First(it=>it.PropertyName==ExpressionTool.GetMemberName(mappingFiled2)) + LeftColumnExpression=thisField2, + LeftEntityColumn=leftEntity.Columns.First(it=>it.PropertyName==ExpressionTool.GetMemberName(thisField2)), + RightColumnExpression=mappingField2, + RightEntityColumn=rightEntity.Columns.First(it=>it.PropertyName==ExpressionTool.GetMemberName(mappingField2)) } }; var conditionals = fieldsHelper.GetMppingSql(list.Cast().ToList(), mappings); diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableExecuteSqlAsync.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableExecuteSqlAsync.cs index 06114a3eb..06000a196 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableExecuteSqlAsync.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableExecuteSqlAsync.cs @@ -502,8 +502,8 @@ namespace ThingsGateway.SqlSugar totalNumber.Value = count; } - public async Task> SetContextAsync(Expression> thisFiled1, Expression> mappingFiled1, -Expression> thisFiled2, Expression> mappingFiled2, + public async Task> SetContextAsync(Expression> thisField1, Expression> mappingField1, +Expression> thisField2, Expression> mappingField2, ParameterT parameter) { if (parameter == null) @@ -515,22 +515,22 @@ ParameterT parameter) List result = new List(); var queryableContext = this.Context.TempItems["Queryable_To_Context"] as MapperContext; var list = queryableContext.list; - var key = thisFiled1.ToString() + mappingFiled1.ToString() + - thisFiled2.ToString() + mappingFiled2.ToString() + + var key = thisField1.ToString() + mappingField1.ToString() + + thisField2.ToString() + mappingField2.ToString() + typeof(ParameterT).FullName + typeof(T).FullName; MappingFieldsHelper fieldsHelper = new MappingFieldsHelper(); var mappings = new List() { new MappingFieldsExpression(){ - LeftColumnExpression=thisFiled1, - LeftEntityColumn=leftEntity.Columns.First(it=>it.PropertyName==ExpressionTool.GetMemberName(thisFiled1)), - RightColumnExpression=mappingFiled1, - RightEntityColumn=rightEntity.Columns.First(it=>it.PropertyName==ExpressionTool.GetMemberName(mappingFiled1)) + LeftColumnExpression=thisField1, + LeftEntityColumn=leftEntity.Columns.First(it=>it.PropertyName==ExpressionTool.GetMemberName(thisField1)), + RightColumnExpression=mappingField1, + RightEntityColumn=rightEntity.Columns.First(it=>it.PropertyName==ExpressionTool.GetMemberName(mappingField1)) }, new MappingFieldsExpression(){ - LeftColumnExpression=thisFiled2, - LeftEntityColumn=leftEntity.Columns.First(it=>it.PropertyName==ExpressionTool.GetMemberName(thisFiled2)), - RightColumnExpression=mappingFiled2, - RightEntityColumn=rightEntity.Columns.First(it=>it.PropertyName==ExpressionTool.GetMemberName(mappingFiled2)) + LeftColumnExpression=thisField2, + LeftEntityColumn=leftEntity.Columns.First(it=>it.PropertyName==ExpressionTool.GetMemberName(thisField2)), + RightColumnExpression=mappingField2, + RightEntityColumn=rightEntity.Columns.First(it=>it.PropertyName==ExpressionTool.GetMemberName(mappingField2)) } }; var conditionals = fieldsHelper.GetMppingSql(list.Cast().ToList(), mappings); @@ -550,22 +550,22 @@ ParameterT parameter) var newResult = fieldsHelper.GetSetList(obj, listObj, mappings).Select(it => (T)it).ToList(); return newResult; } - public async Task> SetContextAsync(Expression> thisFiled, Expression> mappingFiled, ParameterT parameter) + public async Task> SetContextAsync(Expression> thisField, Expression> mappingField, ParameterT parameter) { List result = new List(); var entity = this.Context.EntityMaintenance.GetEntityInfo(); var queryableContext = this.Context.TempItems["Queryable_To_Context"] as MapperContext; var list = queryableContext.list; var pkName = ""; - if ((mappingFiled as LambdaExpression).Body is UnaryExpression) + if ((mappingField as LambdaExpression).Body is UnaryExpression) { - pkName = (((mappingFiled as LambdaExpression).Body as UnaryExpression).Operand as MemberExpression).Member.Name; + pkName = (((mappingField as LambdaExpression).Body as UnaryExpression).Operand as MemberExpression).Member.Name; } else { - pkName = ((mappingFiled as LambdaExpression).Body as MemberExpression).Member.Name; + pkName = ((mappingField as LambdaExpression).Body as MemberExpression).Member.Name; } - var key = thisFiled.ToString() + mappingFiled.ToString() + typeof(ParameterT).FullName + typeof(T).FullName; + var key = thisField.ToString() + mappingField.ToString() + typeof(ParameterT).FullName + typeof(T).FullName; var ids = list.Select(it => it.GetType().GetProperty(pkName).GetValue(it)).ToArray(); if (queryableContext.TempChildLists == null) queryableContext.TempChildLists = new Dictionary(); @@ -579,18 +579,18 @@ ParameterT parameter) queryableContext.TempChildLists = new Dictionary(); await Context.Utilities.PageEachAsync(ids, 200, async pageIds => { - result.AddRange(await Clone().In(thisFiled, pageIds).ToListAsync().ConfigureAwait(false)); + result.AddRange(await Clone().In(thisField, pageIds).ToListAsync().ConfigureAwait(false)); }).ConfigureAwait(false); queryableContext.TempChildLists[key] = result; } var name = ""; - if ((thisFiled as LambdaExpression).Body is UnaryExpression) + if ((thisField as LambdaExpression).Body is UnaryExpression) { - name = (((thisFiled as LambdaExpression).Body as UnaryExpression).Operand as MemberExpression).Member.Name; + name = (((thisField as LambdaExpression).Body as UnaryExpression).Operand as MemberExpression).Member.Name; } else { - name = ((thisFiled as LambdaExpression).Body as MemberExpression).Member.Name; + name = ((thisField as LambdaExpression).Body as MemberExpression).Member.Name; } var pkValue = parameter.GetType().GetProperty(pkName).GetValue(parameter); result = result.Where(it => it.GetType().GetProperty(name).GetValue(it).ObjToString() == pkValue.ObjToString()).ToList(); diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableHelper.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableHelper.cs index 57ab58446..3a6a73176 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableHelper.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableHelper.cs @@ -952,17 +952,17 @@ namespace ThingsGateway.SqlSugar var mapperFieldExp = mapperField as MemberExpression; Check.Exception(mapperFieldExp.Type.IsClass(), ".Mapper() parameter error"); var objType = mapperObjectExp.Type; - var filedType = mapperFieldExp.Expression.Type; + var fieldType = mapperFieldExp.Expression.Type; Check.Exception(objType != typeof(TObject) && objType != typeof(List), ".Mapper() parameter error"); if (objType == typeof(List)) { objType = typeof(TObject); } - var filedName = mapperFieldExp.Member.Name; + var fieldName = mapperFieldExp.Member.Name; var objName = mapperObjectExp.Member.Name; - var filedEntity = this.Context.EntityMaintenance.GetEntityInfo(objType); - var objEntity = this.Context.EntityMaintenance.GetEntityInfo(filedType); - var isSelf = filedType == typeof(T); + var fieldEntity = this.Context.EntityMaintenance.GetEntityInfo(objType); + var objEntity = this.Context.EntityMaintenance.GetEntityInfo(fieldType); + var isSelf = fieldType == typeof(T); if (Mappers == null) Mappers = new List>>(); if (isSelf) @@ -971,29 +971,29 @@ namespace ThingsGateway.SqlSugar { if (entitys.IsNullOrEmpty() || entitys.Count == 0) return; var entity = entitys.First(); - var whereCol = filedEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals(filedName, StringComparison.CurrentCultureIgnoreCase)); + var whereCol = fieldEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals(fieldName, StringComparison.CurrentCultureIgnoreCase)); if (whereCol == null) { - whereCol = filedEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true); + whereCol = fieldEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true); } if (whereCol == null) { - whereCol = filedEntity.Columns.FirstOrDefault(it => GetPrimaryKeys().Any(pk => pk.Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase))); + whereCol = fieldEntity.Columns.FirstOrDefault(it => GetPrimaryKeys().Any(pk => pk.Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase))); } if (whereCol == null) { - whereCol = filedEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals("id", StringComparison.CurrentCultureIgnoreCase)); + whereCol = fieldEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals("id", StringComparison.CurrentCultureIgnoreCase)); } if (whereCol == null) { - whereCol = filedEntity.Columns.FirstOrDefault(it => (it.PropertyName).Equals(it.EntityName + "id", StringComparison.CurrentCultureIgnoreCase)); + whereCol = fieldEntity.Columns.FirstOrDefault(it => (it.PropertyName).Equals(it.EntityName + "id", StringComparison.CurrentCultureIgnoreCase)); } if (whereCol == null) { Check.Exception(true, ".Mapper() parameter error"); } - List inValues = entitys.Select(it => it.GetType().GetProperty(filedName).GetValue(it, null).ObjToString()).ToList(); - if (inValues != null && inValues.Count != 0 && UtilMethods.GetUnderType(entitys.First().GetType().GetProperty(filedName).PropertyType) == UtilConstants.GuidType) + List inValues = entitys.Select(it => it.GetType().GetProperty(fieldName).GetValue(it, null).ObjToString()).ToList(); + if (inValues != null && inValues.Count != 0 && UtilMethods.GetUnderType(entitys.First().GetType().GetProperty(fieldName).PropertyType) == UtilConstants.GuidType) { inValues = inValues.Select(x => string.IsNullOrEmpty(x) ? "null" : x).Distinct().ToList(); } @@ -1010,7 +1010,7 @@ namespace ThingsGateway.SqlSugar var list = this.Context.Queryable().Where(wheres).ToList(); foreach (var item in entitys) { - var whereValue = item.GetType().GetProperty(filedName).GetValue(item, null); + var whereValue = item.GetType().GetProperty(fieldName).GetValue(item, null); var setValue = list.Where(x => x.GetType().GetProperty(whereCol.PropertyName).GetValue(x, null).ObjToString() == whereValue.ObjToString()).ToList(); var setObject = item.GetType().GetProperty(objName); if (setObject.PropertyType.FullName.IsCollectionsList()) @@ -1032,7 +1032,7 @@ namespace ThingsGateway.SqlSugar if (entitys.IsNullOrEmpty() || entitys.Count == 0) return; var entity = entitys.First(); var tEntity = this.Context.EntityMaintenance.GetEntityInfo(); - var whereCol = tEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals(filedName, StringComparison.CurrentCultureIgnoreCase)); + var whereCol = tEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals(fieldName, StringComparison.CurrentCultureIgnoreCase)); if (whereCol == null) { whereCol = tEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true); @@ -1054,7 +1054,7 @@ namespace ThingsGateway.SqlSugar Check.Exception(true, ".Mapper() parameter error"); } List inValues = entitys.Select(it => it.GetType().GetProperty(whereCol.PropertyName).GetValue(it, null).ObjToString()).ToList(); - var dbColumnName = filedEntity.Columns.FirstOrDefault(it => it.PropertyName == filedName).DbColumnName; + var dbColumnName = fieldEntity.Columns.FirstOrDefault(it => it.PropertyName == fieldName).DbColumnName; List wheres = new List() { new ConditionalModel() @@ -1068,7 +1068,7 @@ namespace ThingsGateway.SqlSugar foreach (var item in entitys) { var whereValue = item.GetType().GetProperty(whereCol.PropertyName).GetValue(item, null); - var setValue = list.Where(x => x.GetType().GetProperty(filedName).GetValue(x, null).ObjToString() == whereValue.ObjToString()).ToList(); + var setValue = list.Where(x => x.GetType().GetProperty(fieldName).GetValue(x, null).ObjToString() == whereValue.ObjToString()).ToList(); var setObject = item.GetType().GetProperty(objName); if (setObject.PropertyType.FullName.IsCollectionsList()) { @@ -1118,18 +1118,18 @@ namespace ThingsGateway.SqlSugar Check.Exception(mainFieldExp.Type.IsClass(), ".Mapper() parameter error"); Check.Exception(childFieldExp.Type.IsClass(), ".Mapper() parameter error"); var objType = mapperObjectExp.Type; - var filedType = mainFieldExp.Expression.Type; + var fieldType = mainFieldExp.Expression.Type; Check.Exception(objType != typeof(TObject) && objType != typeof(List), ".Mapper() parameter error"); if (objType == typeof(List)) { objType = typeof(TObject); } - var mainFiledName = mainFieldExp.Member.Name; - var childFiledName = childFieldExp.Member.Name; + var mainFieldName = mainFieldExp.Member.Name; + var childFieldName = childFieldExp.Member.Name; var objName = mapperObjectExp.Member.Name; - var filedEntity = this.Context.EntityMaintenance.GetEntityInfo(objType); - var objEntity = this.Context.EntityMaintenance.GetEntityInfo(filedType); - var isSelf = filedType == typeof(T); + var fieldEntity = this.Context.EntityMaintenance.GetEntityInfo(objType); + var objEntity = this.Context.EntityMaintenance.GetEntityInfo(fieldType); + var isSelf = fieldType == typeof(T); if (Mappers == null) Mappers = new List>>(); if (isSelf) @@ -1138,28 +1138,28 @@ namespace ThingsGateway.SqlSugar { if (entitys.IsNullOrEmpty() || entitys.Count == 0) return; var entity = entitys.First(); - var whereCol = filedEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals(childFiledName, StringComparison.CurrentCultureIgnoreCase)); + var whereCol = fieldEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals(childFieldName, StringComparison.CurrentCultureIgnoreCase)); if (whereCol == null) { - whereCol = filedEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true); + whereCol = fieldEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true); } if (whereCol == null) { - whereCol = filedEntity.Columns.FirstOrDefault(it => GetPrimaryKeys().Any(pk => pk.Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase))); + whereCol = fieldEntity.Columns.FirstOrDefault(it => GetPrimaryKeys().Any(pk => pk.Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase))); } if (whereCol == null) { - whereCol = filedEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals("id", StringComparison.CurrentCultureIgnoreCase)); + whereCol = fieldEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals("id", StringComparison.CurrentCultureIgnoreCase)); } if (whereCol == null) { - whereCol = filedEntity.Columns.FirstOrDefault(it => (it.PropertyName).Equals(it.EntityName + "id", StringComparison.CurrentCultureIgnoreCase)); + whereCol = fieldEntity.Columns.FirstOrDefault(it => (it.PropertyName).Equals(it.EntityName + "id", StringComparison.CurrentCultureIgnoreCase)); } if (whereCol == null) { Check.Exception(true, ".Mapper() parameter error"); } - List inValues = entitys.Select(it => it.GetType().GetProperty(mainFiledName).GetValue(it, null).ObjToString()).ToList(); + List inValues = entitys.Select(it => it.GetType().GetProperty(mainFieldName).GetValue(it, null).ObjToString()).ToList(); List wheres = new List() { new ConditionalModel() @@ -1172,7 +1172,7 @@ namespace ThingsGateway.SqlSugar var list = this.Context.Queryable().Where(wheres).ToList(); foreach (var item in entitys) { - var whereValue = item.GetType().GetProperty(mainFiledName).GetValue(item, null); + var whereValue = item.GetType().GetProperty(mainFieldName).GetValue(item, null); var setValue = list.Where(x => x.GetType().GetProperty(whereCol.PropertyName).GetValue(x, null).ObjToString() == whereValue.ObjToString()).ToList(); var setObject = item.GetType().GetProperty(objName); if (setObject.PropertyType.FullName.IsCollectionsList()) @@ -1194,7 +1194,7 @@ namespace ThingsGateway.SqlSugar if (entitys.IsNullOrEmpty() || entitys.Count == 0) return; var entity = entitys.First(); var tEntity = this.Context.EntityMaintenance.GetEntityInfo(); - var whereCol = tEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals(childFiledName, StringComparison.CurrentCultureIgnoreCase)); + var whereCol = tEntity.Columns.FirstOrDefault(it => it.PropertyName.Equals(childFieldName, StringComparison.CurrentCultureIgnoreCase)); if (whereCol == null) { whereCol = tEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true); @@ -1216,7 +1216,7 @@ namespace ThingsGateway.SqlSugar Check.Exception(true, ".Mapper() parameter error"); } List inValues = entitys.Select(it => it.GetType().GetProperty(whereCol.PropertyName).GetValue(it, null).ObjToString()).ToList(); - var dbColumnName = filedEntity.Columns.FirstOrDefault(it => it.PropertyName == mainFiledName).DbColumnName; + var dbColumnName = fieldEntity.Columns.FirstOrDefault(it => it.PropertyName == mainFieldName).DbColumnName; List wheres = new List() { new ConditionalModel() @@ -1230,7 +1230,7 @@ namespace ThingsGateway.SqlSugar foreach (var item in entitys) { var whereValue = item.GetType().GetProperty(whereCol.PropertyName).GetValue(item, null); - var setValue = list.Where(x => x.GetType().GetProperty(mainFiledName).GetValue(x, null).ObjToString() == whereValue.ObjToString()).ToList(); + var setValue = list.Where(x => x.GetType().GetProperty(mainFieldName).GetValue(x, null).ObjToString() == whereValue.ObjToString()).ToList(); var setObject = item.GetType().GetProperty(objName); if (setObject.PropertyType.FullName.IsCollectionsList()) { @@ -1612,8 +1612,8 @@ namespace ThingsGateway.SqlSugar result.SqlBuilder = this.SqlBuilder; result.SqlBuilder.QueryBuilder.Parameters = QueryBuilder.Parameters; result.SqlBuilder.QueryBuilder.SelectValue = expression; - result.SqlBuilder.QueryBuilder.IsSelectSingleFiledJson = UtilMethods.IsJsonMember(expression, this.Context); - result.SqlBuilder.QueryBuilder.IsSelectSingleFiledArray = UtilMethods.IsArrayMember(expression, this.Context); + result.SqlBuilder.QueryBuilder.IsSelectSingleFieldJson = UtilMethods.IsJsonMember(expression, this.Context); + result.SqlBuilder.QueryBuilder.IsSelectSingleFieldArray = UtilMethods.IsArrayMember(expression, this.Context); if (this.IsCache) { result.WithCache(this.CacheTime); @@ -1949,11 +1949,11 @@ namespace ThingsGateway.SqlSugar { result = this.Context.Utilities.DataReaderToExpandoObjectList(dataReader).Select(it => ((TResult)(object)it)).ToList(); } - else if (QueryBuilder.IsSelectSingleFiledJson) + else if (QueryBuilder.IsSelectSingleFieldJson) { result = this.Context.Utilities.DataReaderToSelectJsonList(dataReader); } - else if (QueryBuilder.IsSelectSingleFiledArray) + else if (QueryBuilder.IsSelectSingleFieldArray) { result = this.Context.Utilities.DataReaderToSelectArrayList(dataReader); } @@ -1995,11 +1995,11 @@ namespace ThingsGateway.SqlSugar var expObj = await Context.Utilities.DataReaderToExpandoObjectListAsync(dataReader).ConfigureAwait(false); result = expObj.Select(it => ((TResult)(object)it)).ToList(); } - else if (QueryBuilder.IsSelectSingleFiledJson) + else if (QueryBuilder.IsSelectSingleFieldJson) { result = await Context.Utilities.DataReaderToSelectJsonListAsync(dataReader).ConfigureAwait(false); } - else if (QueryBuilder.IsSelectSingleFiledArray) + else if (QueryBuilder.IsSelectSingleFieldArray) { result = await Context.Utilities.DataReaderToSelectArrayListAsync(dataReader).ConfigureAwait(false); } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableProvider.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableProvider.cs index 81fc81128..57b1e98bd 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -474,7 +474,7 @@ namespace ThingsGateway.SqlSugar var bEntity = this.Context.EntityMaintenance.GetEntityInfo(bType); var bProperty = bEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true)?.PropertyName; Check.Exception(bProperty == null, bEntity.EntityName + " no primary key"); - var bDbFiled = bEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true).DbColumnName; + var bDbField = bEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true).DbColumnName; this.Mapper((it, cache) => { var list = cache.Get>>(oldList => @@ -496,7 +496,7 @@ namespace ThingsGateway.SqlSugar cons = new List() { new ConditionalModel(){ ConditionalType=ConditionalType.In, - FieldName= bDbFiled, + FieldName= bDbField, FieldValue=string.Join(",",mappingList.Select(z=>UtilMethods.GetPropertyValue(z,m_bPropertyName)).Distinct()) } }; @@ -1139,12 +1139,12 @@ namespace ThingsGateway.SqlSugar } var pks = GetPrimaryKeys().Select(it => SqlBuilder.GetTranslationTableName(it)).ToList(); Check.Exception(pks == null || pks.Count != 1, "Queryable.In(params object[] pkValues): Only one primary key"); - string filed = pks.FirstOrDefault(); + string field = pks.FirstOrDefault(); string shortName = QueryBuilder.TableShortName == null ? null : (QueryBuilder.TableShortName + "."); - filed = shortName + filed; - return In(filed, pkValues); + field = shortName + field; + return In(field, pkValues); } - public virtual ISugarQueryable In(string filed, params FieldType[] inValues) + public virtual ISugarQueryable In(string field, params FieldType[] inValues) { if (inValues.Length == 1) { @@ -1153,7 +1153,7 @@ namespace ThingsGateway.SqlSugar var whereIndex = QueryBuilder.WhereIndex; string parameterName = this.SqlBuilder.SqlParameterKeyWord + "InPara" + whereIndex; this.AddParameters(new SugarParameter(parameterName, inValues[0])); - this.Where(string.Format(QueryBuilder.EqualTemplate, SqlBuilder.GetTranslationColumnName(filed), parameterName)); + this.Where(string.Format(QueryBuilder.EqualTemplate, SqlBuilder.GetTranslationColumnName(field), parameterName)); QueryBuilder.WhereIndex++; } else @@ -1166,7 +1166,7 @@ namespace ThingsGateway.SqlSugar values.Add(item.ToString().ToSqlValue()); } } - this.Where(string.Format(QueryBuilder.InTemplate, SqlBuilder.GetTranslationColumnName(filed), string.Join(",", values))); + this.Where(string.Format(QueryBuilder.InTemplate, SqlBuilder.GetTranslationColumnName(field), string.Join(",", values))); } } else @@ -1186,7 +1186,7 @@ namespace ThingsGateway.SqlSugar } } } - this.Where(string.Format(QueryBuilder.InTemplate, SqlBuilder.GetTranslationColumnName(filed), string.Join(",", values))); + this.Where(string.Format(QueryBuilder.InTemplate, SqlBuilder.GetTranslationColumnName(field), string.Join(",", values))); } return this; @@ -1395,15 +1395,15 @@ namespace ThingsGateway.SqlSugar return this; } - public virtual ISugarQueryable GroupBy(string groupFileds) + public virtual ISugarQueryable GroupBy(string groupFields) { - groupFileds = groupFileds.ToCheckField(); + groupFields = groupFields.ToCheckField(); var croupByValue = QueryBuilder.GroupByValue; if (QueryBuilder.GroupByValue.IsNullOrEmpty()) { QueryBuilder.GroupByValue = QueryBuilder.GroupByTemplate; } - QueryBuilder.GroupByValue += string.IsNullOrEmpty(croupByValue) ? groupFileds : ("," + groupFileds); + QueryBuilder.GroupByValue += string.IsNullOrEmpty(croupByValue) ? groupFields : ("," + groupFields); return this; } @@ -1415,14 +1415,14 @@ namespace ThingsGateway.SqlSugar QueryBuilder.DisableTop = true; return this; } - public virtual ISugarQueryable PartitionBy(string groupFileds) + public virtual ISugarQueryable PartitionBy(string groupFields) { var partitionByValue = QueryBuilder.PartitionByValue; if (QueryBuilder.PartitionByValue.IsNullOrEmpty()) { QueryBuilder.PartitionByValue = QueryBuilder.PartitionByTemplate; } - QueryBuilder.PartitionByValue += string.IsNullOrEmpty(partitionByValue) ? groupFileds : ("," + groupFileds); + QueryBuilder.PartitionByValue += string.IsNullOrEmpty(partitionByValue) ? groupFields : ("," + groupFields); return this; } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableProvider02-05.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableProvider02-05.cs index 27d98842a..9534f89c3 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableProvider02-05.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/QueryableProvider/QueryableProvider02-05.cs @@ -435,9 +435,9 @@ namespace ThingsGateway.SqlSugar QueryBuilder.DisableTop = true; return this; } - public new ISugarQueryable PartitionBy(string groupFileds) + public new ISugarQueryable PartitionBy(string groupFields) { - base.PartitionBy(groupFileds); + base.PartitionBy(groupFields); return this; } public new virtual ISugarQueryable GroupByIF(bool isGroupBy, Expression> expression) @@ -1010,9 +1010,9 @@ namespace ThingsGateway.SqlSugar QueryBuilder.DisableTop = true; return this; } - public new ISugarQueryable PartitionBy(string groupFileds) + public new ISugarQueryable PartitionBy(string groupFields) { - base.PartitionBy(groupFileds); + base.PartitionBy(groupFields); return this; } public new virtual ISugarQueryable GroupByIF(bool isGroupBy, Expression> expression) diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SqlBuilderProvider/DeleteBuilder.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SqlBuilderProvider/DeleteBuilder.cs index c6920c6e6..a002fa2cc 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SqlBuilderProvider/DeleteBuilder.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SqlBuilderProvider/DeleteBuilder.cs @@ -27,7 +27,7 @@ namespace ThingsGateway.SqlSugar set { _WhereInfos = value; } } public virtual List BigDataInValues { get; set; } - public virtual string BigDataFiled { get; set; } + public virtual string BigDataField { get; set; } #endregion #region Sql Template @@ -136,7 +136,7 @@ namespace ThingsGateway.SqlSugar while (pageCount >= pageIndex) { var inValues = this.BigDataInValues.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); - batchDeleteSql.Append(sql + string.Format(WhereInTemplate, BigDataFiled, inValues.ToArray().ToJoinSqlInVals())); + batchDeleteSql.Append(sql + string.Format(WhereInTemplate, BigDataField, inValues.ToArray().ToJoinSqlInVals())); batchDeleteSql.Append(';'); pageIndex++; } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SqlBuilderProvider/QueryBuilder.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SqlBuilderProvider/QueryBuilder.cs index c297b2791..2ede52a34 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SqlBuilderProvider/QueryBuilder.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SqlBuilderProvider/QueryBuilder.cs @@ -13,7 +13,7 @@ namespace ThingsGateway.SqlSugar this.Parameters = new List(); } - #region Private Fileds + #region Private Fields protected List _JoinQueryInfos; protected Dictionary _EasyJoinInfos; private List _WhereInfos; @@ -42,8 +42,8 @@ namespace ThingsGateway.SqlSugar internal List> AppendValues { get; set; } public bool IsCrossQueryWithAttr { get; set; } public Dictionary CrossQueryItems { get; set; } - public bool IsSelectSingleFiledJson { get; set; } - public bool IsSelectSingleFiledArray { get; set; } + public bool IsSelectSingleFieldJson { get; set; } + public bool IsSelectSingleFieldArray { get; set; } public string TranLock { get; set; } public bool IsDisableMasterSlaveSeparation { get; set; } public bool IsEnableMasterSlaveSeparation { get; set; } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SugarProvider/SqlSugarProvider.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SugarProvider/SqlSugarProvider.cs index e4cc8cb28..fc9f3e5a1 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SugarProvider/SqlSugarProvider.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SugarProvider/SqlSugarProvider.cs @@ -54,12 +54,7 @@ namespace ThingsGateway.SqlSugar #endregion #region Util Methods - [Obsolete("Use SqlSugarClient.Utilities")] - public virtual IContextMethods RewritableMethods - { - get { return this.Context.Utilities; } - set { this.Context.Utilities = value; } - } + public virtual IContextMethods Utilities { get @@ -1376,16 +1371,7 @@ namespace ThingsGateway.SqlSugar Check.ExceptionEasy(" var childDb=Db.GetConnection(configId); use Db.CreateContext ", " 例如 var childDb=Db.GetConnection(configId);其中Db才能使用CreateContext,childDb不能使用"); return null; } - //[Obsolete("Use SqlSugarClient.GetSimpleClient() Or SqlSugarClient.GetSimpleClient() ")] - //public virtual SimpleClient SimpleClient - //{ - // get - // { - // if (this._SimpleClient == null) - // this._SimpleClient = new SimpleClient(this); - // return this._SimpleClient; - // } - //} + public virtual SimpleClient GetSimpleClient() where T : class, new() { return new SimpleClient(this); diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/UpdateProvider/UpdateableProvider.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/UpdateProvider/UpdateableProvider.cs index 60946afc5..fa427e24a 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -445,7 +445,7 @@ namespace ThingsGateway.SqlSugar } return this; } - public IUpdateable PublicSetColumns(Expression> filedNameExpression, string computationalSymbol) + public IUpdateable PublicSetColumns(Expression> fieldNameExpression, string computationalSymbol) { if (UpdateParameterIsNull == true) { @@ -453,10 +453,10 @@ namespace ThingsGateway.SqlSugar } else { - var name = ExpressionTool.GetMemberName(filedNameExpression); + var name = ExpressionTool.GetMemberName(fieldNameExpression); if (name == null) { - Check.ExceptionEasy(filedNameExpression + " format error ", filedNameExpression + "参数格式错误"); + Check.ExceptionEasy(fieldNameExpression + " format error ", fieldNameExpression + "参数格式错误"); } //var value = this.UpdateBuilder.GetExpressionValue(ValueExpExpression, ResolveExpressType.WhereSingle).GetResultString(); if (this.UpdateBuilder.ReSetValueBySqlExpList == null) @@ -476,18 +476,18 @@ namespace ThingsGateway.SqlSugar return this; } - public IUpdateable PublicSetColumns(Expression> filedNameExpression, Expression> ValueExpExpression) + public IUpdateable PublicSetColumns(Expression> fieldNameExpression, Expression> ValueExpExpression) { if (UpdateParameterIsNull == true) { - return SetColumns(filedNameExpression, ValueExpExpression); + return SetColumns(fieldNameExpression, ValueExpExpression); } else { - var name = ExpressionTool.GetMemberName(filedNameExpression); + var name = ExpressionTool.GetMemberName(fieldNameExpression); if (name == null) { - Check.ExceptionEasy(filedNameExpression + " format error ", filedNameExpression + "参数格式错误"); + Check.ExceptionEasy(fieldNameExpression + " format error ", fieldNameExpression + "参数格式错误"); } var value = this.UpdateBuilder.GetExpressionValue(ValueExpExpression, ResolveExpressType.WhereSingle).GetResultString(); if (this.UpdateBuilder.ReSetValueBySqlExpList == null) @@ -712,24 +712,24 @@ namespace ThingsGateway.SqlSugar AppendSets(); return this; } - public IUpdateable SetColumnsIF(bool isUpdateColumns, Expression> filedNameExpression, object fieldValue) + public IUpdateable SetColumnsIF(bool isUpdateColumns, Expression> fieldNameExpression, object fieldValue) { if (isUpdateColumns) { - return SetColumns(filedNameExpression, fieldValue); + return SetColumns(fieldNameExpression, fieldValue); } else { return this; } } - public virtual IUpdateable SetColumns(Expression> filedNameExpression, Expression> valueExpression) + public virtual IUpdateable SetColumns(Expression> fieldNameExpression, Expression> valueExpression) { if (valueExpression == null) { - return SetColumns(filedNameExpression, (object)null); + return SetColumns(fieldNameExpression, (object)null); } - var name = UpdateBuilder.GetExpressionValue(filedNameExpression, ResolveExpressType.FieldSingle).GetString(); + var name = UpdateBuilder.GetExpressionValue(fieldNameExpression, ResolveExpressType.FieldSingle).GetString(); name = UpdateBuilder.Builder.GetTranslationColumnName(name); var exp = ExpressionTool.RemoveConvert((valueExpression as LambdaExpression).Body); var value = UpdateBuilder.GetExpressionValue(exp, ResolveExpressType.WhereSingle).GetString(); @@ -749,9 +749,9 @@ namespace ThingsGateway.SqlSugar } return this; } - public virtual IUpdateable SetColumns(Expression> filedNameExpression, object fieldValue) + public virtual IUpdateable SetColumns(Expression> fieldNameExpression, object fieldValue) { - var name = UpdateBuilder.GetExpressionValue(filedNameExpression, ResolveExpressType.FieldSingle).GetString(); + var name = UpdateBuilder.GetExpressionValue(fieldNameExpression, ResolveExpressType.FieldSingle).GetString(); name = UpdateBuilder.Builder.GetNoTranslationColumnName(name); return SetColumns(name, fieldValue); } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Entities/EntityInfo.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Entities/EntityInfo.cs index 83f162162..d546d7c90 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Entities/EntityInfo.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Entities/EntityInfo.cs @@ -11,7 +11,7 @@ public bool IsDisabledDelete { get; set; } public bool IsDisabledUpdateAll { get; set; } public List Indexs { get; set; } - public bool IsCreateTableFiledSort { get; set; } + public bool IsCreateTableFieldSort { get; set; } public string Discrimator { get; set; } } } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Entities/Mapping/SugarMappingAttribute.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Entities/Mapping/SugarMappingAttribute.cs index d4030d74b..612f17eec 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Entities/Mapping/SugarMappingAttribute.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Entities/Mapping/SugarMappingAttribute.cs @@ -8,7 +8,7 @@ public string TableDescription { get; set; } public bool IsDisabledDelete { get; set; } public bool IsDisabledUpdateAll { get; set; } - public bool IsCreateTableFiledSort { get; set; } + public bool IsCreateTableFieldSort { get; set; } public string Discrimator { get; set; } public SugarTable(string tableName) { @@ -31,7 +31,7 @@ this.TableName = tableName; this.TableDescription = tableDescription; this.IsDisabledDelete = isDisabledDelete; - this.IsCreateTableFiledSort = isCreateTableFieldSort; + this.IsCreateTableFieldSort = isCreateTableFieldSort; } } [AttributeUsage(AttributeTargets.Property, Inherited = true)] diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/Common/ExpressionTool.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/Common/ExpressionTool.cs index bfd4c93c3..b9a28b43f 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/Common/ExpressionTool.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/Common/ExpressionTool.cs @@ -585,7 +585,7 @@ namespace ThingsGateway.SqlSugar } else if (isField) { - reval = GetFiledValue(memberExpr); + reval = GetFieldValue(memberExpr); } } if (memberExpr.Expression == null) @@ -706,7 +706,7 @@ namespace ThingsGateway.SqlSugar } } - public static object GetFiledValue(MemberExpression memberExpr) + public static object GetFieldValue(MemberExpression memberExpr) { if (!(memberExpr.Member is FieldInfo)) { diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/DbMethods/SqlFunc.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/DbMethods/SqlFunc.cs index ea2e0a9b7..292939a94 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/DbMethods/SqlFunc.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/DbMethods/SqlFunc.cs @@ -91,7 +91,7 @@ namespace ThingsGateway.SqlSugar throw new NotSupportedException("Can only be used in expressions"); } - public static int RowCount(object countFiledName, object orderByField, object partitionBy) + public static int RowCount(object countFieldName, object orderByField, object partitionBy) { throw new NotSupportedException("Can only be used in expressions"); } @@ -99,35 +99,35 @@ namespace ThingsGateway.SqlSugar { throw new NotSupportedException("Can only be used in expressions"); } - public static TRestult RowSum(TRestult filedName) + public static TRestult RowSum(TRestult fieldName) { throw new NotSupportedException("Can only be used in expressions"); } - public static TRestult RowSum(TRestult filedName, object orderByField, object partitionBy) + public static TRestult RowSum(TRestult fieldName, object orderByField, object partitionBy) { throw new NotSupportedException("Can only be used in expressions"); } - public static TRestult RowMax(TRestult filedName) + public static TRestult RowMax(TRestult fieldName) { throw new NotSupportedException("Can only be used in expressions"); } - public static TRestult RowMax(TRestult filedNameobject, object orderByField, object partitionBy) + public static TRestult RowMax(TRestult fieldNameobject, object orderByField, object partitionBy) { throw new NotSupportedException("Can only be used in expressions"); } - public static TRestult RowMin(TRestult filedName) + public static TRestult RowMin(TRestult fieldName) { throw new NotSupportedException("Can only be used in expressions"); } - public static TRestult RowMin(TRestult filedName, object orderByField, object partitionBy) + public static TRestult RowMin(TRestult fieldName, object orderByField, object partitionBy) { throw new NotSupportedException("Can only be used in expressions"); } - public static TRestult RowAvg(TRestult filedName) + public static TRestult RowAvg(TRestult fieldName) { throw new NotSupportedException("Can only be used in expressions"); } - public static TRestult RowAvg(TRestult filedName, object orderByField, object partitionBy) + public static TRestult RowAvg(TRestult fieldName, object orderByField, object partitionBy) { throw new NotSupportedException("Can only be used in expressions"); } @@ -387,9 +387,9 @@ namespace ThingsGateway.SqlSugar /// public static Subqueryable Subqueryable() where T : class, new() { throw new NotSupportedException("Can only be used in expressions"); } public static CaseThen IF(bool condition) { throw new NotSupportedException("Can only be used in expressions"); } - [Obsolete("多库下参数顺序不一至,为了保证多库下更好体验请使用 SqlFunc.CharIndexNew")] - public static int CharIndex(string findChar, string searchValue) { throw new NotSupportedException("Can only be used in expressions"); } + public static int CharIndexNew(string stringValue, string charValue) { throw new NotSupportedException("Can only be used in expressions"); } + public static int BitwiseAnd(int left, int right) { throw new NotSupportedException("Can only be used in expressions"); } public static int BitwiseInclusiveOR(int left, int right) { throw new NotSupportedException("Can only be used in expressions"); } public static int BitwiseAnd(long left, long right) { throw new NotSupportedException("Can only be used in expressions"); } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/ResolveItems/MapperExpressionResolve.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/ResolveItems/MapperExpressionResolve.cs index 089e25885..ef26ea569 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/ResolveItems/MapperExpressionResolve.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/ResolveItems/MapperExpressionResolve.cs @@ -208,12 +208,12 @@ namespace ThingsGateway.SqlSugar var fieldName = entity.Columns.First(it => it.PropertyName == name).DbColumnName; var array = (field as MemberExpression).ToString().Split('.').ToList(); array[array.Count - 1] = fieldName; - var filedString = string.Join(".", array); + var fieldString = string.Join(".", array); return new MapperExpressionInfo() { Type = type, FieldName = fieldName, - FieldString = filedString, + FieldString = fieldString, EntityInfo = entity }; } @@ -303,7 +303,7 @@ namespace ThingsGateway.SqlSugar var fieldName = entity.Columns.First(it => it.PropertyName == name).DbColumnName; //var array = (field as MemberExpression).ToString().Split('.').ToList(); //array[array.Count() - 1] = fieldName; - //var filedString = string.Join(".", array); + //var fieldString = string.Join(".", array); return new MapperExpressionInfo() { Type = type, diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/ResolveItems/MemberNoExpressionResolve.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/ResolveItems/MemberNoExpressionResolve.cs index eef65a963..10ff6cbde 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/ResolveItems/MemberNoExpressionResolve.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/ResolveItems/MemberNoExpressionResolve.cs @@ -47,7 +47,7 @@ namespace ThingsGateway.SqlSugar object value = null; if (isField) { - value = ExpressionTool.GetFiledValue(expression); + value = ExpressionTool.GetFieldValue(expression); } else if (isProperty) { diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/ResolveItems/NewArrayExpessionResolve.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/ResolveItems/NewArrayExpessionResolve.cs index 384f39621..a40a7483c 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/ResolveItems/NewArrayExpessionResolve.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/ExpressionsToSql/ResolveItems/NewArrayExpessionResolve.cs @@ -15,7 +15,7 @@ namespace ThingsGateway.SqlSugar case ResolveExpressType.SelectMultiple: case ResolveExpressType.FieldSingle: case ResolveExpressType.FieldMultiple: - #region Filed + #region Field try { var value = ExpressionTool.DynamicInvoke(expression); diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Interface/IQueryable.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Interface/IQueryable.cs index ecf9ef4dc..e22c7257e 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Interface/IQueryable.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Interface/IQueryable.cs @@ -124,13 +124,13 @@ namespace ThingsGateway.SqlSugar ISugarQueryable GroupBy(Expression> expression); - ISugarQueryable GroupBy(string groupFileds); + ISugarQueryable GroupBy(string groupFields); ISugarQueryable GroupByIF(bool isGroupBy, Expression> expression); ISugarQueryable GroupByIF(bool isGroupBy, string groupFields); ISugarQueryable PartitionBy(Expression> expression); - ISugarQueryable PartitionBy(string groupFileds); + ISugarQueryable PartitionBy(string groupFields); ISugarQueryable Skip(int index); ISugarQueryable Take(int num); @@ -213,10 +213,10 @@ namespace ThingsGateway.SqlSugar //bool IntoTable(Type TableEntityType, params string[] columnNameList); //bool IntoTable(params string[] columnNameList); List SetContext(Expression> whereExpression, ParameterT parameter); - List SetContext(Expression> thisFiled, Expression> mappingFiled, ParameterT parameter); - List SetContext(Expression> thisFiled1, Expression> mappingFiled1, Expression> thisFiled2, Expression> mappingFiled2, ParameterT parameter); - Task> SetContextAsync(Expression> thisFiled, Expression> mappingFiled, ParameterT parameter); - Task> SetContextAsync(Expression> thisFiled1, Expression> mappingFiled1, Expression> thisFiled2, Expression> mappingFiled2, ParameterT parameter); + List SetContext(Expression> thisField, Expression> mappingField, ParameterT parameter); + List SetContext(Expression> thisField1, Expression> mappingField1, Expression> thisField2, Expression> mappingField2, ParameterT parameter); + Task> SetContextAsync(Expression> thisField, Expression> mappingField, ParameterT parameter); + Task> SetContextAsync(Expression> thisField1, Expression> mappingField1, Expression> thisField2, Expression> mappingField2, ParameterT parameter); Dictionary ToDictionary(Expression> key, Expression> value); Dictionary ToDictionary(Expression> key, Expression> value); Task> ToDictionaryAsync(Expression> key, Expression> value); @@ -410,7 +410,7 @@ namespace ThingsGateway.SqlSugar #region GroupBy new ISugarQueryable PartitionBy(Expression> expression); ISugarQueryable PartitionBy(Expression> expression); - new ISugarQueryable PartitionBy(string groupFileds); + new ISugarQueryable PartitionBy(string groupFields); new ISugarQueryable GroupBy(Expression> expression); ISugarQueryable GroupBy(Expression> expression); new ISugarQueryable GroupByIF(bool isGroupBy, Expression> expression); @@ -555,7 +555,7 @@ namespace ThingsGateway.SqlSugar new ISugarQueryable PartitionBy(Expression> expression); ISugarQueryable PartitionBy(Expression> expression); ISugarQueryable PartitionBy(Expression> expression); - new ISugarQueryable PartitionBy(string groupFileds); + new ISugarQueryable PartitionBy(string groupFields); new ISugarQueryable GroupBy(Expression> expression); ISugarQueryable GroupBy(Expression> expression); ISugarQueryable GroupBy(Expression> expression); diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Interface/ISqlSugarClient.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Interface/ISqlSugarClient.cs index 40a8a7009..9acf8946e 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Interface/ISqlSugarClient.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Interface/ISqlSugarClient.cs @@ -152,11 +152,6 @@ namespace ThingsGateway.SqlSugar IStorageable Storageable(List dataList) where T : class, new(); IStorageable Storageable(T data) where T : class, new(); StorageableDataTable Storageable(DataTable data); - [Obsolete("use Storageable")] - ISaveable Saveable(List saveObjects) where T : class, new(); - [Obsolete("use Storageable")] - ISaveable Saveable(T saveObject) where T : class, new(); - StorageableMethodInfo StorageableByObject(object singleEntityObjectOrListObject); #endregion diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Interface/ISubInsertable.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Interface/ISubInsertable.cs index ebd91d246..56b66e056 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Interface/ISubInsertable.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Interface/ISubInsertable.cs @@ -6,8 +6,6 @@ namespace ThingsGateway.SqlSugar { ISubInsertable AddSubList(Expression> items); ISubInsertable AddSubList(Expression> tree); - [Obsolete("use ExecuteCommand")] - object ExecuteReturnPrimaryKey(); object ExecuteCommand(); Task ExecuteCommandAsync(); } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Interface/IUpdateable.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Interface/IUpdateable.cs index 1b99ea781..206158760 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Interface/IUpdateable.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Interface/IUpdateable.cs @@ -67,9 +67,9 @@ namespace ThingsGateway.SqlSugar IUpdateable SetColumns(Expression> columns, bool appendColumnsByDataFilter); IUpdateable SetColumns(string fieldName, object fieldValue); - IUpdateable SetColumns(Expression> filedNameExpression, object fieldValue); - IUpdateable SetColumns(Expression> filedNameExpression, Expression> valueExpression); - IUpdateable SetColumnsIF(bool isUpdateColumns, Expression> filedNameExpression, object fieldValue); + IUpdateable SetColumns(Expression> fieldNameExpression, object fieldValue); + IUpdateable SetColumns(Expression> fieldNameExpression, Expression> valueExpression); + IUpdateable SetColumnsIF(bool isUpdateColumns, Expression> fieldNameExpression, object fieldValue); IUpdateable UpdateColumnsIF(bool isUpdateColumns, Expression> columns); IUpdateable UpdateColumnsIF(bool isUpdateColumns, params string[] columns); @@ -91,8 +91,8 @@ namespace ThingsGateway.SqlSugar IUpdateable EnableDiffLogEvent(object businessData = null); IUpdateable EnableDiffLogEventIF(bool isEnableDiffLog, object businessData = null); IUpdateable ReSetValue(Action setValueExpression); - IUpdateable PublicSetColumns(Expression> filedNameExpression, string computationalSymbol); - IUpdateable PublicSetColumns(Expression> filedNameExpression, Expression> ValueExpExpression); + IUpdateable PublicSetColumns(Expression> fieldNameExpression, string computationalSymbol); + IUpdateable PublicSetColumns(Expression> fieldNameExpression, Expression> ValueExpExpression); IUpdateable RemoveDataCache(); IUpdateable RemoveDataCache(string likeString); IUpdateable CallEntityMethod(Expression> method); diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Json2Sql/JsonModels/SelectFieldModel.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Json2Sql/JsonModels/SelectFieldModel.cs index 36b68bea2..a00c8559a 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Json2Sql/JsonModels/SelectFieldModel.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Json2Sql/JsonModels/SelectFieldModel.cs @@ -4,9 +4,6 @@ { public object FieldName { get; set; } - [Obsolete("名字拼错使用FieldName")] - public object FiledName { get { return FieldName; } set { FieldName = value; } } - public string AsName { get; set; } public static List Create(params SelectModel[] SelectModels) diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Json2Sql/ModelToSql/SelectModelToSql.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Json2Sql/ModelToSql/SelectModelToSql.cs index 3390a7225..7e3ce989e 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Json2Sql/ModelToSql/SelectModelToSql.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Json2Sql/ModelToSql/SelectModelToSql.cs @@ -14,7 +14,7 @@ namespace ThingsGateway.SqlSugar var orderByModel = item as SelectModel; orderByModel.AsName = GetAsName(orderByModel); orderByModel.FieldName = GetSqlPart(orderByModel.FieldName, pars).ObjToString(); - AppendFiledName(sql, orderByModel); + AppendFieldName(sql, orderByModel); } else { @@ -46,7 +46,7 @@ namespace ThingsGateway.SqlSugar return this.SqlTranslationLeft + orderByModel.AsName + this.SqlTranslationRight; } - private void AppendFiledName(StringBuilder sql, SelectModel orderByModel) + private void AppendFieldName(StringBuilder sql, SelectModel orderByModel) { sql.Append($" {orderByModel.FieldName} AS {orderByModel.AsName} ,"); } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Json2Sql/ModelToSql/SqlPart.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Json2Sql/ModelToSql/SqlPart.cs index c08f2d78c..bb1d50237 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Json2Sql/ModelToSql/SqlPart.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Json2Sql/ModelToSql/SqlPart.cs @@ -10,7 +10,7 @@ namespace ThingsGateway.SqlSugar #region Root private string GetSqlPart(object value, List pars) { - Check.Exception(value == null, $" FiledName is error "); + Check.Exception(value == null, $" FieldName is error "); if (IsSqlSplicingOperator(value)) { return GetSqlSplicingOperator(value); diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Json2Sql/Provider/Queryable/AppendSelect.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Json2Sql/Provider/Queryable/AppendSelect.cs index 9439bce5d..f90ca034f 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Json2Sql/Provider/Queryable/AppendSelect.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Json2Sql/Provider/Queryable/AppendSelect.cs @@ -58,20 +58,20 @@ namespace ThingsGateway.SqlSugar && it.Columns.Any(z => z.Name.EqualCase(columnName))); } - private string GetColumnName(string filedName) + private string GetColumnName(string fieldName) { - return filedName.Split('.').Last(); + return fieldName.Split('.').Last(); } - private string GetTableName(string filedName) + private string GetTableName(string fieldName) { - if (!filedName.Contains('.')) + if (!fieldName.Contains('.')) { return TableInfos.First(it => it.IsMaster).Table; } else { - var shortName = filedName.Split('.').First(); + var shortName = fieldName.Split('.').First(); return TableInfos.First(it => it.ShortName == shortName).Table; } } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Dm/CodeFirst/DmCodeFirst.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Dm/CodeFirst/DmCodeFirst.cs index 1d4845a6d..7f84963c2 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Dm/CodeFirst/DmCodeFirst.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Dm/CodeFirst/DmCodeFirst.cs @@ -14,7 +14,7 @@ DbColumnInfo dbColumnInfo = this.EntityColumnToDbColumn(entityInfo, tableName, item); columns.Add(dbColumnInfo); } - if (entityInfo.IsCreateTableFiledSort) + if (entityInfo.IsCreateTableFieldSort) { columns = columns.OrderBy(c => c.CreateTableFieldSort).ToList(); columns = columns.OrderBy(it => it.IsPrimarykey ? 0 : 1).ToList(); diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Dm/DbMaintenance/DmDbMaintenance.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Dm/DbMaintenance/DmDbMaintenance.cs index 09f8afe2d..62421c3ce 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Dm/DbMaintenance/DmDbMaintenance.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Dm/DbMaintenance/DmDbMaintenance.cs @@ -556,7 +556,7 @@ WHERE table_name = '" + tableName + "'"); return comments.HasValue() ? comments.First() : ""; } - public string GetFieldComment(string tableName, string filedName) + public string GetFieldComment(string tableName, string fieldName) { string cacheKey = "DbMaintenanceProvider.GetFieldComment." + tableName; var comments = this.Context.Utilities.GetReflectionInoCacheInstance().GetOrCreate(cacheKey, @@ -571,7 +571,7 @@ WHERE table_name = '" + tableName + "'"); }); if (comments.HasValue()) { - var comment = comments.FirstOrDefault(it => it.DbColumnName.Equals(filedName, StringComparison.CurrentCultureIgnoreCase)); + var comment = comments.FirstOrDefault(it => it.DbColumnName.Equals(fieldName, StringComparison.CurrentCultureIgnoreCase)); return comment?.ColumnDescription; } else diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Dm/Queryable/DmQueryable.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Dm/Queryable/DmQueryable.cs index 458890c66..bdfbf6019 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Dm/Queryable/DmQueryable.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Dm/Queryable/DmQueryable.cs @@ -7,9 +7,9 @@ return this; } - //public override ISugarQueryable PartitionBy(string groupFileds) + //public override ISugarQueryable PartitionBy(string groupFields) //{ - // this.GroupBy(groupFileds); + // this.GroupBy(groupFields); // return this; //} } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Kdbndp/CodeFirst/KdbndpCodeFirst.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Kdbndp/CodeFirst/KdbndpCodeFirst.cs index 3b392e92b..eb36ff2ce 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Kdbndp/CodeFirst/KdbndpCodeFirst.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Kdbndp/CodeFirst/KdbndpCodeFirst.cs @@ -14,7 +14,7 @@ DbColumnInfo dbColumnInfo = this.EntityColumnToDbColumn(entityInfo, tableName, item); columns.Add(dbColumnInfo); } - if (entityInfo.IsCreateTableFiledSort) + if (entityInfo.IsCreateTableFieldSort) { columns = columns.OrderBy(c => c.CreateTableFieldSort).ToList(); } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Kdbndp/Queryable/KdbndpQueryable.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Kdbndp/Queryable/KdbndpQueryable.cs index 03668568d..f1132821a 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Kdbndp/Queryable/KdbndpQueryable.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Kdbndp/Queryable/KdbndpQueryable.cs @@ -7,7 +7,7 @@ return this; } - //public override ISugarQueryable PartitionBy(string groupFileds) + //public override ISugarQueryable PartitionBy(string groupFields) //{ // this.QueryBuilder. // return this; diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/MySql/CodeFirst/MySqlCodeFirst.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/MySql/CodeFirst/MySqlCodeFirst.cs index 8437f2bc9..4164526d9 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/MySql/CodeFirst/MySqlCodeFirst.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/MySql/CodeFirst/MySqlCodeFirst.cs @@ -20,7 +20,7 @@ DbColumnInfo dbColumnInfo = this.EntityColumnToDbColumn(entityInfo, tableName, item); columns.Add(dbColumnInfo); } - if (entityInfo.IsCreateTableFiledSort) + if (entityInfo.IsCreateTableFieldSort) { columns = columns.OrderBy(c => c.CreateTableFieldSort).ToList(); columns = columns.OrderBy(it => it.IsPrimarykey ? 0 : 1).ToList(); diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/MySql/Queryable/MySqlQueryable.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/MySql/Queryable/MySqlQueryable.cs index 2f5b445f2..ed19bdc1f 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/MySql/Queryable/MySqlQueryable.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/MySql/Queryable/MySqlQueryable.cs @@ -19,9 +19,9 @@ return this; } - public override ISugarQueryable PartitionBy(string groupFileds) + public override ISugarQueryable PartitionBy(string groupFields) { - this.GroupBy(groupFileds); + this.GroupBy(groupFields); return this; } } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Oracle/DbMaintenance/OracleDbMaintenance.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Oracle/DbMaintenance/OracleDbMaintenance.cs index 2ad7c0181..c5056f90c 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Oracle/DbMaintenance/OracleDbMaintenance.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Oracle/DbMaintenance/OracleDbMaintenance.cs @@ -583,7 +583,7 @@ WHERE table_name = '" + tableName + "'"); return comments.HasValue() ? comments.First() : ""; } - public string GetFieldComment(string tableName, string filedName) + public string GetFieldComment(string tableName, string fieldName) { string cacheKey = "DbMaintenanceProvider.GetFieldComment." + tableName; var comments = this.Context.Utilities.GetReflectionInoCacheInstance().GetOrCreate(cacheKey, @@ -596,7 +596,7 @@ WHERE table_name = '" + tableName + "'"); this.Context.Ado.IsEnableLogEvent = oldIsEnableLog; return pks; }); - return comments.HasValue() ? comments.FirstOrDefault(it => it.DbColumnName.EqualCase(filedName))?.ColumnDescription : ""; + return comments.HasValue() ? comments.FirstOrDefault(it => it.DbColumnName.EqualCase(fieldName))?.ColumnDescription : ""; } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Oscar/CodeFirst/OscarCodeFirst.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Oscar/CodeFirst/OscarCodeFirst.cs index 04b11507a..9f467009d 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Oscar/CodeFirst/OscarCodeFirst.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Oscar/CodeFirst/OscarCodeFirst.cs @@ -14,7 +14,7 @@ DbColumnInfo dbColumnInfo = this.EntityColumnToDbColumn(entityInfo, tableName, item); columns.Add(dbColumnInfo); } - if (entityInfo.IsCreateTableFiledSort) + if (entityInfo.IsCreateTableFieldSort) { columns = columns.OrderBy(c => c.CreateTableFieldSort).ToList(); } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Oscar/Queryable/OscarQueryable.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Oscar/Queryable/OscarQueryable.cs index 57ec43b5e..6548be806 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Oscar/Queryable/OscarQueryable.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Oscar/Queryable/OscarQueryable.cs @@ -7,9 +7,9 @@ return this; } - public override ISugarQueryable PartitionBy(string groupFileds) + public override ISugarQueryable PartitionBy(string groupFields) { - this.GroupBy(groupFileds); + this.GroupBy(groupFields); return this; } } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/PostgreSQL/CodeFirst/PostgreSQLCodeFirst.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/PostgreSQL/CodeFirst/PostgreSQLCodeFirst.cs index ef1e30025..afe07ba40 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/PostgreSQL/CodeFirst/PostgreSQLCodeFirst.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/PostgreSQL/CodeFirst/PostgreSQLCodeFirst.cs @@ -24,7 +24,7 @@ DbColumnInfo dbColumnInfo = this.EntityColumnToDbColumn(entityInfo, tableName, item); columns.Add(dbColumnInfo); } - if (entityInfo.IsCreateTableFiledSort) + if (entityInfo.IsCreateTableFieldSort) { columns = columns.OrderBy(c => c.CreateTableFieldSort).ToList(); } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/PostgreSQL/Queryable/PostgreSqlQueryable.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/PostgreSQL/Queryable/PostgreSqlQueryable.cs index 530902dd3..b57bfefbe 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/PostgreSQL/Queryable/PostgreSqlQueryable.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/PostgreSQL/Queryable/PostgreSqlQueryable.cs @@ -7,9 +7,9 @@ return this; } - public override ISugarQueryable PartitionBy(string groupFileds) + public override ISugarQueryable PartitionBy(string groupFields) { - this.GroupBy(groupFileds); + this.GroupBy(groupFields); return this; } } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/QuestDB/CodeFirst/QuestDBCodeFirst.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/QuestDB/CodeFirst/QuestDBCodeFirst.cs index 6f9597a2a..49f607073 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/QuestDB/CodeFirst/QuestDBCodeFirst.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/QuestDB/CodeFirst/QuestDBCodeFirst.cs @@ -26,7 +26,7 @@ namespace ThingsGateway.SqlSugar DbColumnInfo dbColumnInfo = this.EntityColumnToDbColumn(entityInfo, tableName, item); columns.Add(dbColumnInfo); } - if (entityInfo.IsCreateTableFiledSort) + if (entityInfo.IsCreateTableFieldSort) { columns = columns.OrderBy(c => c.CreateTableFieldSort).ToList(); } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/QuestDB/Queryable/QuestDBQueryable.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/QuestDB/Queryable/QuestDBQueryable.cs index 738887f5d..8cba89a79 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/QuestDB/Queryable/QuestDBQueryable.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/QuestDB/Queryable/QuestDBQueryable.cs @@ -7,13 +7,13 @@ return this; } - public override ISugarQueryable PartitionBy(string groupFileds) + public override ISugarQueryable PartitionBy(string groupFields) { if (this.QueryBuilder.Take == 1) { this.QueryBuilder.Take = null; } - this.QueryBuilder.PartitionByValue = groupFileds; + this.QueryBuilder.PartitionByValue = groupFields; return this; } } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Sqlite/CodeFirst/SqliteCodeFirst.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Sqlite/CodeFirst/SqliteCodeFirst.cs index a1d7ce7a6..579c0a57e 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Sqlite/CodeFirst/SqliteCodeFirst.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Sqlite/CodeFirst/SqliteCodeFirst.cs @@ -123,7 +123,7 @@ DbColumnInfo dbColumnInfo = this.EntityColumnToDbColumn(entityInfo, tableName, item); columns.Add(dbColumnInfo); } - if (entityInfo.IsCreateTableFiledSort) + if (entityInfo.IsCreateTableFieldSort) { columns = columns.OrderBy(c => c.CreateTableFieldSort).ToList(); columns = columns.OrderBy(it => it.IsPrimarykey ? 0 : 1).ToList(); diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Sqlite/Queryable/SqliteQueryable.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Sqlite/Queryable/SqliteQueryable.cs index 23841ab71..817742830 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Sqlite/Queryable/SqliteQueryable.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Sqlite/Queryable/SqliteQueryable.cs @@ -7,9 +7,9 @@ return this; } - public override ISugarQueryable PartitionBy(string groupFileds) + public override ISugarQueryable PartitionBy(string groupFields) { - this.GroupBy(groupFileds); + this.GroupBy(groupFields); return this; } } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/SqlSugarClient.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/SqlSugarClient.cs index 6f58d7da1..fd085f59a 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/SqlSugarClient.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/SqlSugarClient.cs @@ -580,16 +580,6 @@ namespace ThingsGateway.SqlSugar return this.Context.Storageable(new List { data }); } - [Obsolete("use Storageable")] - public ISaveable Saveable(List saveObjects) where T : class, new() - { - return this.Context.Saveable(saveObjects); - } - [Obsolete("use Storageable")] - public ISaveable Saveable(T saveObject) where T : class, new() - { - return this.Context.Saveable(saveObject); - } public StorageableMethodInfo StorageableByObject(object singleEntityObjectOrListObject) { return this.Context.StorageableByObject(singleEntityObjectOrListObject); diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/SqlSugarScope.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/SqlSugarScope.cs index feae5821b..b04ad7fe2 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/SqlSugarScope.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/SqlSugarScope.cs @@ -499,17 +499,6 @@ namespace ThingsGateway.SqlSugar return ScopedContext.RollbackTranAsync(); } - [Obsolete("use Storageable")] - public ISaveable Saveable(List saveObjects) where T : class, new() - { - return ScopedContext.Saveable(saveObjects); - } - [Obsolete("use Storageable")] - public ISaveable Saveable(T saveObject) where T : class, new() - { - return ScopedContext.Saveable(saveObject); - } - public int SaveQueues(bool isTran = true) { return ScopedContext.SaveQueues(isTran); diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Utilities/UtilMethods.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Utilities/UtilMethods.cs index aa58e2ef3..05de53e24 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Utilities/UtilMethods.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Utilities/UtilMethods.cs @@ -1812,11 +1812,6 @@ namespace ThingsGateway.SqlSugar } } - [Obsolete("请使用新名字:FieldNameSql")] - public static string FiledNameSql() - { - return $"[value=sql{UtilConstants.ReplaceKey}]"; - } public static string FieldNameSql() { if (StaticConfig.TableQuerySqlKey != Guid.Empty) diff --git a/src/Admin/ThingsGateway.SqlSugar/TDengine/TDengine/Queryable/TDengineSqlQueryable.cs b/src/Admin/ThingsGateway.SqlSugar/TDengine/TDengine/Queryable/TDengineSqlQueryable.cs index 3e2de07fd..2b6b49ac8 100644 --- a/src/Admin/ThingsGateway.SqlSugar/TDengine/TDengine/Queryable/TDengineSqlQueryable.cs +++ b/src/Admin/ThingsGateway.SqlSugar/TDengine/TDengine/Queryable/TDengineSqlQueryable.cs @@ -7,9 +7,9 @@ return this; } - public override ISugarQueryable PartitionBy(string groupFileds) + public override ISugarQueryable PartitionBy(string groupFields) { - this.GroupBy(groupFileds); + this.GroupBy(groupFields); return this; } } diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 8ca5dfde6..32f3cd066 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,8 +1,8 @@ - 10.8.23 - 10.8.23 + 10.8.24 + 10.8.24 2.8.4 10.8.6 8.0.17 diff --git a/src/Foundation/ThingsGateway.Foundation/Device/DeviceBase.cs b/src/Foundation/ThingsGateway.Foundation/Device/DeviceBase.cs index ff0a8367d..666bfbfda 100644 --- a/src/Foundation/ThingsGateway.Foundation/Device/DeviceBase.cs +++ b/src/Foundation/ThingsGateway.Foundation/Device/DeviceBase.cs @@ -335,7 +335,7 @@ public abstract class DeviceBase : DisposableObject, IDevice return EasyTask.CompletedTask; } - protected volatile bool AutoConnect = true; + public bool AutoConnect { get; protected set; } = true; /// private async ValueTask SendAsync(ISendMessage sendMessage, IClientChannel channel = default, EndPoint endPoint = default, CancellationToken token = default) { @@ -372,8 +372,7 @@ public abstract class DeviceBase : DisposableObject, IDevice SetDataAdapter(channel); try { - if (AutoConnect && !Channel.Online) - await Channel.ConnectAsync(Channel.ChannelOptions.ConnectTimeout, token).ConfigureAwait(false); + await ConnectAsync(token).ConfigureAwait(false); } catch (Exception) { @@ -387,6 +386,30 @@ public abstract class DeviceBase : DisposableObject, IDevice } + private WaitLock connectWaitLock = new(); + + public async Task ConnectAsync(CancellationToken token) + { + if (AutoConnect && Channel != null && Channel?.Online != true) + { + try + { + await connectWaitLock.WaitAsync(token).ConfigureAwait(false); + if (AutoConnect && Channel != null && Channel?.Online != true) + { + await Channel.CloseAsync().ConfigureAwait(false); + await Task.Delay(500, token).ConfigureAwait(false); + await Channel.ConnectAsync(Channel.ChannelOptions.ConnectTimeout, token).ConfigureAwait(false); + } + } + finally + { + await Task.Delay(500, token).ConfigureAwait(false); + connectWaitLock.Release(); + } + } + } + /// public virtual async ValueTask SendAsync(ISendMessage sendMessage, CancellationToken cancellationToken) { @@ -553,7 +576,7 @@ public abstract class DeviceBase : DisposableObject, IDevice } else { - throw new(result.ErrorMessage ?? "unknown error"); + return new MessageBase(result); } } diff --git a/src/Foundation/ThingsGateway.Foundation/Device/DeviceExtension.cs b/src/Foundation/ThingsGateway.Foundation/Device/DeviceExtension.cs index 6e58e8f12..dcaa0526e 100644 --- a/src/Foundation/ThingsGateway.Foundation/Device/DeviceExtension.cs +++ b/src/Foundation/ThingsGateway.Foundation/Device/DeviceExtension.cs @@ -112,7 +112,7 @@ public static partial class DeviceExtension int index = variable.Index; try { - var changed = byteConverter.GetChangedDataFormBytes(device, variable.RegisterAddress, buffer, index, dataType, variable.ArrayLength ?? 1, variable.Value, out var data); + var changed = byteConverter.GetChangedDataFormBytes(device, variable.RegisterAddress, buffer, index, dataType, variable.ArrayLength ?? 1, variable.RawValue, out var data); if (changed) { result = variable.SetValue(data, time); diff --git a/src/Foundation/ThingsGateway.Foundation/Device/IDevice.cs b/src/Foundation/ThingsGateway.Foundation/Device/IDevice.cs index a74704f24..b9b53e5bc 100644 --- a/src/Foundation/ThingsGateway.Foundation/Device/IDevice.cs +++ b/src/Foundation/ThingsGateway.Foundation/Device/IDevice.cs @@ -15,7 +15,7 @@ namespace ThingsGateway.Foundation; /// /// 协议设备接口 /// -public interface IDevice : IDisposable +public interface IDevice : IDisposable, IDisposableObject { #region 属性 @@ -61,6 +61,7 @@ public interface IDevice : IDisposable /// 字符串翻转 /// bool IsStringReverseByteWord { get; set; } + bool AutoConnect { get; } #endregion 属性 @@ -467,4 +468,5 @@ public interface IDevice : IDisposable /// 单独设备日志 void InitChannel(IChannel channel, ILog? deviceLog = null); ValueTask> ReadAsync(object state, CancellationToken cancellationToken = default); + Task ConnectAsync(CancellationToken token); } diff --git a/src/Foundation/ThingsGateway.Foundation/ThingsGateway.Foundation.csproj b/src/Foundation/ThingsGateway.Foundation/ThingsGateway.Foundation.csproj index 42ebac6ad..4982e6429 100644 --- a/src/Foundation/ThingsGateway.Foundation/ThingsGateway.Foundation.csproj +++ b/src/Foundation/ThingsGateway.Foundation/ThingsGateway.Foundation.csproj @@ -10,8 +10,8 @@ - - + + diff --git a/src/Foundation/ThingsGateway.Foundation/Variable/IVariable.cs b/src/Foundation/ThingsGateway.Foundation/Variable/IVariable.cs index 44995bbeb..c3a4ff607 100644 --- a/src/Foundation/ThingsGateway.Foundation/Variable/IVariable.cs +++ b/src/Foundation/ThingsGateway.Foundation/Variable/IVariable.cs @@ -54,6 +54,7 @@ public interface IVariable /// 打包变量 /// IVariableSource VariableSource { get; set; } + object? RawValue { get; } void SetNoChangedValue(DateTime dateTime); diff --git a/src/Foundation/ThingsGateway.Foundation/Variable/VariableClass.cs b/src/Foundation/ThingsGateway.Foundation/Variable/VariableClass.cs index 14beb5948..fa48e29db 100644 --- a/src/Foundation/ThingsGateway.Foundation/Variable/VariableClass.cs +++ b/src/Foundation/ThingsGateway.Foundation/Variable/VariableClass.cs @@ -61,9 +61,11 @@ public class VariableClass : IVariable /// IVariableSource /// public IVariableSource VariableSource { get; set; } + public object? RawValue { get; private set; } public void SetNoChangedValue(DateTime dateTime) { + SetValue(RawValue, dateTime, true); } /// @@ -76,6 +78,7 @@ public class VariableClass : IVariable public virtual OperResult SetValue(object? value, DateTime dateTime = default, bool isOnline = true) { IsOnline = isOnline; + RawValue = value; _value = value; return new(); } diff --git a/src/Gateway/ThingsGateway.Gateway.Application/Driver/Collect/CollectFoundationBase.cs b/src/Gateway/ThingsGateway.Gateway.Application/Driver/Collect/CollectFoundationBase.cs index 6858c2b49..124349c4c 100644 --- a/src/Gateway/ThingsGateway.Gateway.Application/Driver/Collect/CollectFoundationBase.cs +++ b/src/Gateway/ThingsGateway.Gateway.Application/Driver/Collect/CollectFoundationBase.cs @@ -58,8 +58,11 @@ public abstract class CollectFoundationBase : CollectBase /// protected override async Task ProtectedStartAsync(CancellationToken cancellationToken) { - if (FoundationDevice?.Channel != null) - await FoundationDevice.Channel.ConnectAsync(FoundationDevice.Channel.ChannelOptions.ConnectTimeout, cancellationToken).ConfigureAwait(false); + if (FoundationDevice != null) + { + await FoundationDevice.ConnectAsync(cancellationToken).ConfigureAwait(false); + } + } public override string GetAddressDescription() @@ -72,16 +75,28 @@ public abstract class CollectFoundationBase : CollectBase { if (FoundationDevice != null) { - if (FoundationDevice.OnLine == false) + if (!FoundationDevice.OnLine) { + if (!FoundationDevice.DisposedValue || FoundationDevice.Channel?.DisposedValue != false) return; Exception exception = null; try { if (!cancellationToken.IsCancellationRequested) { - await FoundationDevice.Channel.ConnectAsync(FoundationDevice.Channel.ChannelOptions.ConnectTimeout, cancellationToken).ConfigureAwait(false); + if (!FoundationDevice.DisposedValue || FoundationDevice.Channel?.DisposedValue != false) return; + + await FoundationDevice.ConnectAsync(cancellationToken).ConfigureAwait(false); + + if (CurrentDevice.DeviceStatusChangeTime < TimerX.Now.AddMinutes(-1)) + { + await Task.Delay(30000, cancellationToken).ConfigureAwait(false); + } + } } + catch (OperationCanceledException) + { + } catch (Exception ex) { exception = ex; diff --git a/src/Gateway/ThingsGateway.Gateway.Application/Model/DeviceRunTime.cs b/src/Gateway/ThingsGateway.Gateway.Application/Model/DeviceRunTime.cs index 514949cd7..8edcdf0ac 100644 --- a/src/Gateway/ThingsGateway.Gateway.Application/Model/DeviceRunTime.cs +++ b/src/Gateway/ThingsGateway.Gateway.Application/Model/DeviceRunTime.cs @@ -67,6 +67,11 @@ public class DeviceRuntime : Device, IDisposable [AutoGenerateColumn(Ignore = true)] public string LogPath => Name.GetDeviceLogPath(); + [System.Text.Json.Serialization.JsonIgnore] + [Newtonsoft.Json.JsonIgnore] + [AdaptIgnore] + public DateTime DeviceStatusChangeTime = DateTime.UnixEpoch.ToLocalTime(); + /// /// 设备状态 /// @@ -86,6 +91,7 @@ public class DeviceRuntime : Device, IDisposable if (_deviceStatus != value) { _deviceStatus = value; + DeviceStatusChangeTime = TimerX.Now; GlobalData.DeviceStatusChange(this); } } diff --git a/src/Gateway/ThingsGateway.Gateway.Application/Model/VariableRunTime.cs b/src/Gateway/ThingsGateway.Gateway.Application/Model/VariableRunTime.cs index e9f23a176..6d5859dda 100644 --- a/src/Gateway/ThingsGateway.Gateway.Application/Model/VariableRunTime.cs +++ b/src/Gateway/ThingsGateway.Gateway.Application/Model/VariableRunTime.cs @@ -109,8 +109,15 @@ public partial class VariableRuntime : Variable, IVariable, IDisposable public void SetNoChangedValue(DateTime dateTime) { DateTime time = dateTime != default ? dateTime : DateTime.Now; - CollectTime = time; - GlobalData.VariableCollectChange(this); + if (!IsOnline) + { + SetValue(RawValue, time, true); + } + else + { + CollectTime = time; + GlobalData.VariableCollectChange(this); + } } private void Set(object data, DateTime dateTime) diff --git a/src/Gateway/ThingsGateway.Gateway.Application/ThingsGateway.Gateway.Application.csproj b/src/Gateway/ThingsGateway.Gateway.Application/ThingsGateway.Gateway.Application.csproj index 267cafc3a..19eaa398d 100644 --- a/src/Gateway/ThingsGateway.Gateway.Application/ThingsGateway.Gateway.Application.csproj +++ b/src/Gateway/ThingsGateway.Gateway.Application/ThingsGateway.Gateway.Application.csproj @@ -8,8 +8,8 @@ - - + + diff --git a/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Variable/ValueTransformConfigPage.razor b/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Variable/ValueTransformConfigPage.razor index 8a6d18910..286878d1f 100644 --- a/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Variable/ValueTransformConfigPage.razor +++ b/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Variable/ValueTransformConfigPage.razor @@ -15,10 +15,10 @@ - - - - + + + + diff --git a/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Variable/ValueTransformConfigPage.razor.cs b/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Variable/ValueTransformConfigPage.razor.cs index 1ebf2426f..8247734c6 100644 --- a/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Variable/ValueTransformConfigPage.razor.cs +++ b/src/Gateway/ThingsGateway.Gateway.Razor/Pages/GatewayMonitorPage/Variable/ValueTransformConfigPage.razor.cs @@ -10,7 +10,6 @@ using Microsoft.AspNetCore.Components.Forms; -using System.Globalization; using System.Text.RegularExpressions; using ThingsGateway.NewLife.Extension; @@ -66,7 +65,7 @@ public partial class ValueTransformConfigPage // Linear + clamp actual - m = Regex.Match(formula, $@"^Math\.Round\(\s* + m = Regex.Match(formula, $@"^Math\.Round\(\s* Math\.Min\(\s* Math\.Max\(\s* \(\(raw\.ToDecimal\(\)\s*-\s*({dec})\)\s*/\s* diff --git a/src/Plugin/ThingsGateway.Foundation.SiemensS7/S7/SiemensS7Master.cs b/src/Plugin/ThingsGateway.Foundation.SiemensS7/S7/SiemensS7Master.cs index 4a2e5aead..dc7d9842f 100644 --- a/src/Plugin/ThingsGateway.Foundation.SiemensS7/S7/SiemensS7Master.cs +++ b/src/Plugin/ThingsGateway.Foundation.SiemensS7/S7/SiemensS7Master.cs @@ -435,19 +435,17 @@ public partial class SiemensS7Master : DeviceBase var result2 = await SendThenReturnMessageBaseAsync(new S7Send(ISO_CR), channel).ConfigureAwait(false); if (!result2.IsSuccess) { - if (result2.Exception is OperationCanceledException) - return true; - - Logger?.LogWarning(string.Format(AppResource.HandshakeError1, channel.ToString(), result2)); await channel.CloseAsync().ConfigureAwait(false); + + if (result2.Exception is not OperationCanceledException) + Logger?.LogWarning(string.Format(AppResource.HandshakeError1, channel.ToString(), result2)); return true; } } - catch (OperationCanceledException) { } catch (Exception ex) { - Logger?.LogWarning(string.Format(AppResource.HandshakeError1, channel.ToString(), ex)); - await channel.CloseAsync().ConfigureAwait(false); + if (ex is not OperationCanceledException) + Logger?.LogWarning(string.Format(AppResource.HandshakeError1, channel.ToString(), ex)); return true; } try @@ -455,11 +453,9 @@ public partial class SiemensS7Master : DeviceBase var result2 = await SendThenReturnMessageBaseAsync(new S7Send(S7_PN), channel).ConfigureAwait(false); if (!result2.IsSuccess) { - if (result2.Exception is OperationCanceledException) - return true; - - Logger?.LogWarning(string.Format(AppResource.HandshakeError2, channel.ToString(), result2)); await channel.CloseAsync().ConfigureAwait(false); + if (result2.Exception is not OperationCanceledException) + Logger?.LogWarning(string.Format(AppResource.HandshakeError2, channel.ToString(), result2)); return true; } if (result2.Content == null) @@ -471,10 +467,10 @@ public partial class SiemensS7Master : DeviceBase Logger?.LogInformation($"PduLength:{PduLength}"); PduLength = PduLength < 200 ? 200 : PduLength; } - catch (OperationCanceledException) { } catch (Exception ex) { - Logger?.LogWarning(string.Format(AppResource.HandshakeError2, channel.ToString(), ex)); + if (ex is not OperationCanceledException) + Logger?.LogWarning(string.Format(AppResource.HandshakeError2, channel.ToString(), ex)); await channel.CloseAsync().ConfigureAwait(false); return true; } @@ -482,7 +478,8 @@ public partial class SiemensS7Master : DeviceBase catch (Exception ex) { await channel.CloseAsync().ConfigureAwait(false); - Logger?.Exception(ex); + if (ex is not OperationCanceledException) + Logger?.Exception(ex); } finally { diff --git a/src/Plugin/ThingsGateway.Plugin.Dlt645/Dlt645_2007/Dlt645_2007Master.cs b/src/Plugin/ThingsGateway.Plugin.Dlt645/Dlt645_2007/Dlt645_2007Master.cs index 458348955..781d5bf4b 100644 --- a/src/Plugin/ThingsGateway.Plugin.Dlt645/Dlt645_2007/Dlt645_2007Master.cs +++ b/src/Plugin/ThingsGateway.Plugin.Dlt645/Dlt645_2007/Dlt645_2007Master.cs @@ -10,6 +10,8 @@ using ThingsGateway.Gateway.Application; +using TouchSocket.Core; + namespace ThingsGateway.Plugin.Dlt645; /// @@ -49,6 +51,11 @@ public class Dlt645_2007Master : CollectFoundationBase { ArgumentNullException.ThrowIfNull(channel); + + var plc = _plc; + _plc = new(); + plc?.SafeDispose(); + //载入配置 _plc.DtuId = _driverPropertys.DtuId; _plc.SendDelayTime = _driverPropertys.SendDelayTime; diff --git a/src/Plugin/ThingsGateway.Plugin.Modbus/ModbusMaster/ModbusMaster.cs b/src/Plugin/ThingsGateway.Plugin.Modbus/ModbusMaster/ModbusMaster.cs index d328d7421..1040b14f7 100644 --- a/src/Plugin/ThingsGateway.Plugin.Modbus/ModbusMaster/ModbusMaster.cs +++ b/src/Plugin/ThingsGateway.Plugin.Modbus/ModbusMaster/ModbusMaster.cs @@ -11,6 +11,8 @@ using ThingsGateway.Debug; using ThingsGateway.Gateway.Application; +using TouchSocket.Core; + namespace ThingsGateway.Plugin.Modbus; /// @@ -63,6 +65,9 @@ public class ModbusMaster : CollectFoundationBase ArgumentNullException.ThrowIfNull(channel); + var plc = _plc; + _plc = new(); + plc?.SafeDispose(); //载入配置 _plc.DataFormat = _driverPropertys.DataFormat; _plc.DtuId = _driverPropertys.DtuId; diff --git a/src/Plugin/ThingsGateway.Plugin.Modbus/ModbusSlave/ModbusSlave.cs b/src/Plugin/ThingsGateway.Plugin.Modbus/ModbusSlave/ModbusSlave.cs index 25a1a3867..2dba8a2ce 100644 --- a/src/Plugin/ThingsGateway.Plugin.Modbus/ModbusSlave/ModbusSlave.cs +++ b/src/Plugin/ThingsGateway.Plugin.Modbus/ModbusSlave/ModbusSlave.cs @@ -22,7 +22,6 @@ using ThingsGateway.NewLife.Json.Extension; using ThingsGateway.SqlSugar; using TouchSocket.Core; -using TouchSocket.Sockets; namespace ThingsGateway.Plugin.Modbus; @@ -83,14 +82,16 @@ public class ModbusSlave : BusinessBase /// protected override async Task ProtectedStartAsync(CancellationToken cancellationToken) { - if (_plc?.Channel != null) - await _plc.Channel.ConnectAsync(_plc.Channel.ChannelOptions.ConnectTimeout, cancellationToken).ConfigureAwait(false); + await _plc.ConnectAsync(cancellationToken).ConfigureAwait(false); } /// protected override async Task InitChannelAsync(IChannel? channel, CancellationToken cancellationToken) { ArgumentNullException.ThrowIfNull(channel); + var plc = _plc; + _plc = new(); + plc?.SafeDispose(); //载入配置 _plc.DataFormat = _driverPropertys.DataFormat; _plc.IsStringReverseByteWord = _driverPropertys.IsStringReverseByteWord; @@ -106,7 +107,7 @@ public class ModbusSlave : BusinessBase try { - await _plc.Channel.ConnectAsync(_plc.Channel.ChannelOptions.ConnectTimeout, CancellationToken.None).ConfigureAwait(false); + await _plc.ConnectAsync(cancellationToken).ConfigureAwait(false); } catch { @@ -158,8 +159,7 @@ public class ModbusSlave : BusinessBase { if (cancellationToken.IsCancellationRequested) return; - await _plc.Channel.CloseAsync().ConfigureAwait(false); - await _plc.Channel.ConnectAsync(3000, cancellationToken).ConfigureAwait(false); + await _plc.ConnectAsync(cancellationToken).ConfigureAwait(false); success = true; } catch (ObjectDisposedException) { } diff --git a/src/Plugin/ThingsGateway.Plugin.OpcDa/OpcDaMaster/OpcDaMaster.cs b/src/Plugin/ThingsGateway.Plugin.OpcDa/OpcDaMaster/OpcDaMaster.cs index d882f244c..1010089c0 100644 --- a/src/Plugin/ThingsGateway.Plugin.OpcDa/OpcDaMaster/OpcDaMaster.cs +++ b/src/Plugin/ThingsGateway.Plugin.OpcDa/OpcDaMaster/OpcDaMaster.cs @@ -55,16 +55,27 @@ public class OpcDaMaster : CollectBase ActiveSubscribe = _driverProperties.ActiveSubscribe, CheckRate = _driverProperties.CheckRate }; - if (_plc == null) + + var plc = _plc; + _plc = new(); + if (plc != null) { - _plc = new(); - _plc.DataChangedHandler += DataChangedHandler; - _plc.LogEvent = (a, b, c, d) => LogMessage?.Log((LogLevel)a, b, c, d); + plc.DataChangedHandler -= DataChangedHandler; + plc.LogEvent = null; + plc.SafeDispose(); } + + _plc.DataChangedHandler += DataChangedHandler; + _plc.LogEvent = Log; _plc.Init(opcNode); await base.InitChannelAsync(channel, cancellationToken).ConfigureAwait(false); } + private void Log(byte level, object sender, string message, Exception ex) + { + LogMessage?.Log((LogLevel)level, sender, message, ex); + } + /// public override bool IsConnected() => _plc?.IsConnected == true; @@ -195,6 +206,22 @@ public class OpcDaMaster : CollectBase { LogMessage?.LogWarning(ex); } + if (VariableTasks.Count > 0) + { + foreach (var item in VariableTasks) + { + item.Stop(); + TaskSchedulerLoop.Remove(item); + } + + VariableTasks = AddVariableTask(cancellationToken); + + foreach (var item in VariableTasks) + { + TaskSchedulerLoop.Add(item); + item.Start(); + } + } } private Dictionary> VariableAddresDicts { get; set; } = new(); diff --git a/src/Plugin/ThingsGateway.Plugin.OpcUa/OpcUaMaster/OpcUaMaster.cs b/src/Plugin/ThingsGateway.Plugin.OpcUa/OpcUaMaster/OpcUaMaster.cs index 9cad1d38e..fb1cd9085 100644 --- a/src/Plugin/ThingsGateway.Plugin.OpcUa/OpcUaMaster/OpcUaMaster.cs +++ b/src/Plugin/ThingsGateway.Plugin.OpcUa/OpcUaMaster/OpcUaMaster.cs @@ -65,12 +65,18 @@ public class OpcUaMaster : CollectBase LoadType = _driverProperties.LoadType, AutoAcceptUntrustedCertificates = _driverProperties.AutoAcceptUntrustedCertificates, }; - if (_plc == null) + + var plc = _plc; + _plc = new(); + if (plc != null) { - _plc = new(); - _plc.LogEvent += _plc_LogEvent; - _plc.DataChangedHandler += DataChangedHandler; + plc.DataChangedHandler -= DataChangedHandler; + plc.LogEvent -= _plc_LogEvent; + plc.SafeDispose(); } + + _plc.LogEvent += _plc_LogEvent; + _plc.DataChangedHandler += DataChangedHandler; _plc.OpcUaProperty = config; await base.InitChannelAsync(channel, cancellationToken).ConfigureAwait(false); } @@ -330,6 +336,22 @@ public class OpcUaMaster : CollectBase } } + if (VariableTasks.Count > 0) + { + foreach (var item in VariableTasks) + { + item.Stop(); + TaskSchedulerLoop.Remove(item); + } + + VariableTasks = AddVariableTask(cancellationToken); + + foreach (var item in VariableTasks) + { + TaskSchedulerLoop.Add(item); + item.Start(); + } + } } private Dictionary> VariableAddresDicts { get; set; } = new(); diff --git a/src/Plugin/ThingsGateway.Plugin.SiemensS7/SiemensS7Master/SiemensS7Master.cs b/src/Plugin/ThingsGateway.Plugin.SiemensS7/SiemensS7Master/SiemensS7Master.cs index 9275804d5..398a7b837 100644 --- a/src/Plugin/ThingsGateway.Plugin.SiemensS7/SiemensS7Master/SiemensS7Master.cs +++ b/src/Plugin/ThingsGateway.Plugin.SiemensS7/SiemensS7Master/SiemensS7Master.cs @@ -56,7 +56,13 @@ public class SiemensS7Master : CollectFoundationBase protected override async Task InitChannelAsync(IChannel? channel = null, CancellationToken cancellationToken = default) { + ArgumentNullException.ThrowIfNull(channel); + + var plc = _plc; + _plc = new(); + plc?.SafeDispose(); + //载入配置 _plc.DataFormat = _driverPropertys.DataFormat; _plc.SendDelayTime = _driverPropertys.SendDelayTime; diff --git a/src/Upgrade/ThingsGateway.Upgrade/ThingsGateway.Upgrade.csproj b/src/Upgrade/ThingsGateway.Upgrade/ThingsGateway.Upgrade.csproj index 89e55ab80..b6d6c7f01 100644 --- a/src/Upgrade/ThingsGateway.Upgrade/ThingsGateway.Upgrade.csproj +++ b/src/Upgrade/ThingsGateway.Upgrade/ThingsGateway.Upgrade.csproj @@ -16,7 +16,7 @@ - + diff --git a/src/Version.props b/src/Version.props index aa2679f42..c28477383 100644 --- a/src/Version.props +++ b/src/Version.props @@ -1,6 +1,6 @@ - 10.8.23 + 10.8.24