diff --git a/src/Admin/ThingsGateway.NewLife.X/Extension/ProcessHelper.cs b/src/Admin/ThingsGateway.NewLife.X/Extension/ProcessHelper.cs index 20d3fd9e2..fa771a8e0 100644 --- a/src/Admin/ThingsGateway.NewLife.X/Extension/ProcessHelper.cs +++ b/src/Admin/ThingsGateway.NewLife.X/Extension/ProcessHelper.cs @@ -463,7 +463,7 @@ public static class ProcessHelper StandardOutputEncoding = outputEncoding, StandardErrorEncoding = outputEncoding, }; - var process = Process.Start(psi); + using var process = Process.Start(psi); if (process == null) return null; if (msWait > 0 && !process.WaitForExit(msWait)) diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs index 2d3bb0f7c..239214f2d 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs @@ -13,7 +13,7 @@ namespace ThingsGateway.SqlSugar /// /// 用于同步操作的锁对象 /// - internal static object LockObject = new object(); + internal static readonly object LockObject = new object(); /// /// SqlSugar提供者实例 /// diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs index 9a8de48da..41503b6d4 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs @@ -31,61 +31,6 @@ namespace ThingsGateway.SqlSugar /// 数据记录器 /// private IDataRecord DataRecord; - /// - /// IsDBNull方法 - /// - private static readonly MethodInfo isDBNullMethod = typeof(IDataRecord).GetMethod(nameof(IDataRecord.IsDBNull), new Type[] { typeof(int) }); - /// - /// GetBoolean方法 - /// - private static readonly MethodInfo getBoolean = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetBoolean), new Type[] { typeof(int) }); - /// - /// GetByte方法 - /// - private static readonly MethodInfo getByte = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetByte), new Type[] { typeof(int) }); - /// - /// GetDateTime方法 - /// - private static readonly MethodInfo getDateTime = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetDateTime), new Type[] { typeof(int) }); - private static readonly MethodInfo getDecimal = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetDecimal), new[] { typeof(int) }); - private static readonly MethodInfo getDouble = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetDouble), new[] { typeof(int) }); - private static readonly MethodInfo getFloat = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetFloat), new[] { typeof(int) }); - private static readonly MethodInfo getGuid = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetGuid), new[] { typeof(int) }); - private static readonly MethodInfo getInt16 = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetInt16), new[] { typeof(int) }); - private static readonly MethodInfo getInt32 = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetInt32), new[] { typeof(int) }); - private static readonly MethodInfo getInt64 = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetInt64), new[] { typeof(int) }); - private static readonly MethodInfo getString = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetString), new[] { typeof(int) }); - private static readonly MethodInfo getdatetimeoffset = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetDateTimeOffset)); - private static readonly MethodInfo getdatetimeoffsetDate = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetDateTimeOffsetDate)); - private static readonly MethodInfo getStringGuid = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetStringGuid)); - private static readonly MethodInfo getXelement = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetXelement)); - private static readonly MethodInfo getConvertStringGuid = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertStringGuid)); - private static readonly MethodInfo getEnum = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetEnum)); - private static readonly MethodInfo getConvertString = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertString)); - private static readonly MethodInfo getConvertFloat = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertFloat)); - private static readonly MethodInfo getConvertBoolean = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertBoolean)); - private static readonly MethodInfo getConvertByte = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertByte)); - private static readonly MethodInfo getConvertChar = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertChar)); - private static readonly MethodInfo getConvertDateTime = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertDateTime)); - private static readonly MethodInfo getConvertTime = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertTime)); - private static readonly MethodInfo getTime = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetTime)); - private static readonly MethodInfo getConvertDecimal = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertDecimal)); - private static readonly MethodInfo getConvertDouble = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertDouble)); - private static readonly MethodInfo getConvertDoubleToFloat = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertDoubleToFloat)); - private static readonly MethodInfo getConvertGuid = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertGuid)); - private static readonly MethodInfo getConvertInt16 = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertInt16)); - private static readonly MethodInfo getConvertInt32 = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertInt32)); - private static readonly MethodInfo getConvertInt64 = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertInt64)); - private static readonly MethodInfo getConvertEnum_Null = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertEnum_Null)); - private static readonly MethodInfo getConvertdatetimeoffset = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertdatetimeoffset)); - private static readonly MethodInfo getConvertdatetimeoffsetDate = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertdatetimeoffsetDate)); - private static readonly MethodInfo getOtherNull = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetOtherNull)); - private static readonly MethodInfo getOther = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetOther)); - private static readonly MethodInfo getJson = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetJson)); - private static readonly MethodInfo getArray = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetArray)); - private static readonly MethodInfo getEntity = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetEntity), new[] { typeof(SqlSugarProvider) }); - private static readonly MethodInfo getMyIntNull = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetMyIntNull)); - private static readonly MethodInfo getMyInt = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetMyInt)); /// /// 加载委托 @@ -219,7 +164,7 @@ namespace ThingsGateway.SqlSugar Label endIfLabel = generator.DefineLabel(); generator.Emit(OpCodes.Ldarg_0); generator.Emit(OpCodes.Ldc_I4, i); - generator.Emit(OpCodes.Callvirt, isDBNullMethod); + generator.Emit(OpCodes.Callvirt, IDataReaderEntityBuilderHelpers.isDBNullMethod); generator.Emit(OpCodes.Brtrue, endIfLabel); generator.Emit(OpCodes.Ldloc, result); var method = (columnInfo.SqlParameterDbType as Type).GetMethod(nameof(ISugarDataConverter.QueryConverter)); @@ -253,12 +198,12 @@ namespace ThingsGateway.SqlSugar if (columnInfo.IsJson) { - MethodInfo jsonMethod = getJson.MakeGenericMethod(columnInfo.PropertyInfo.PropertyType); + MethodInfo jsonMethod = IDataReaderEntityBuilderHelpers.getJson.MakeGenericMethod(columnInfo.PropertyInfo.PropertyType); int i = DataRecord.GetOrdinal(fieldName); Label endIfLabel = generator.DefineLabel(); generator.Emit(OpCodes.Ldarg_0); generator.Emit(OpCodes.Ldc_I4, i); - generator.Emit(OpCodes.Callvirt, isDBNullMethod); + generator.Emit(OpCodes.Callvirt, IDataReaderEntityBuilderHelpers.isDBNullMethod); generator.Emit(OpCodes.Brtrue, endIfLabel); generator.Emit(OpCodes.Ldloc, result); generator.Emit(OpCodes.Ldarg_0); @@ -278,12 +223,12 @@ namespace ThingsGateway.SqlSugar } if (columnInfo.IsArray) { - MethodInfo arrayMehtod = getArray.MakeGenericMethod(columnInfo.PropertyInfo.PropertyType); + MethodInfo arrayMehtod = IDataReaderEntityBuilderHelpers.getArray.MakeGenericMethod(columnInfo.PropertyInfo.PropertyType); int i = DataRecord.GetOrdinal(fieldName); Label endIfLabel = generator.DefineLabel(); generator.Emit(OpCodes.Ldarg_0); generator.Emit(OpCodes.Ldc_I4, i); - generator.Emit(OpCodes.Callvirt, isDBNullMethod); + generator.Emit(OpCodes.Callvirt, IDataReaderEntityBuilderHelpers.isDBNullMethod); generator.Emit(OpCodes.Brtrue, endIfLabel); generator.Emit(OpCodes.Ldloc, result); generator.Emit(OpCodes.Ldarg_0); @@ -298,7 +243,7 @@ namespace ThingsGateway.SqlSugar Label endIfLabel = generator.DefineLabel(); generator.Emit(OpCodes.Ldarg_0); generator.Emit(OpCodes.Ldc_I4, i); - generator.Emit(OpCodes.Callvirt, isDBNullMethod); + generator.Emit(OpCodes.Callvirt, IDataReaderEntityBuilderHelpers.isDBNullMethod); generator.Emit(OpCodes.Brtrue, endIfLabel); generator.Emit(OpCodes.Ldloc, result); generator.Emit(OpCodes.Ldarg_0); @@ -332,7 +277,7 @@ namespace ThingsGateway.SqlSugar generator.Emit(OpCodes.Ldarg_0); generator.Emit(OpCodes.Ldc_I4, i); - generator.Emit(OpCodes.Callvirt, isDBNullMethod); + generator.Emit(OpCodes.Callvirt, IDataReaderEntityBuilderHelpers.isDBNullMethod); generator.Emit(OpCodes.Brtrue, endIfLabel); generator.Emit(OpCodes.Ldloc, result); generator.Emit(OpCodes.Ldarg_0); @@ -378,7 +323,7 @@ namespace ThingsGateway.SqlSugar { if (provider.IsNoSql) { - method = isNullableType ? getOtherNull.MakeGenericMethod(bindPropertyType) : getOther.MakeGenericMethod(bindPropertyType); + method = isNullableType ? IDataReaderEntityBuilderHelpers.getOtherNull.MakeGenericMethod(bindPropertyType) : IDataReaderEntityBuilderHelpers.getOther.MakeGenericMethod(bindPropertyType); if (method.IsVirtual) generator.Emit(OpCodes.Callvirt, method); else @@ -393,39 +338,39 @@ namespace ThingsGateway.SqlSugar { if (bindPropertyType.IsEnum()) { - method = isNullableType ? getConvertEnum_Null.MakeGenericMethod(bindPropertyType) : getEnum.MakeGenericMethod(bindPropertyType); + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertEnum_Null.MakeGenericMethod(bindPropertyType) : IDataReaderEntityBuilderHelpers.getEnum.MakeGenericMethod(bindPropertyType); } else if (bindPropertyType == UtilConstants.IntType) { - method = isNullableType ? getConvertInt32 : getInt32; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertInt32 : IDataReaderEntityBuilderHelpers.getInt32; } else if (bindPropertyType == UtilConstants.DateTimeOffsetType && SugarCompatible.IsFramework) { - method = isNullableType ? getConvertdatetimeoffset : getdatetimeoffset; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertdatetimeoffset : IDataReaderEntityBuilderHelpers.getdatetimeoffset; } else if (bindPropertyType == UtilConstants.ByteType) { - method = isNullableType ? getConvertByte : getByte; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertByte : IDataReaderEntityBuilderHelpers.getByte; } else if (bindPropertyType == UtilConstants.StringType && dbTypeName.EqualCase("timestamp")) { - method = isNullableType ? getOtherNull.MakeGenericMethod(bindPropertyType) : getOther.MakeGenericMethod(bindPropertyType); + method = isNullableType ? IDataReaderEntityBuilderHelpers.getOtherNull.MakeGenericMethod(bindPropertyType) : IDataReaderEntityBuilderHelpers.getOther.MakeGenericMethod(bindPropertyType); } else if (dbTypeName.EqualCase("STRING")) { - method = isNullableType ? getOtherNull.MakeGenericMethod(bindPropertyType) : getOther.MakeGenericMethod(bindPropertyType); + method = isNullableType ? IDataReaderEntityBuilderHelpers.getOtherNull.MakeGenericMethod(bindPropertyType) : IDataReaderEntityBuilderHelpers.getOther.MakeGenericMethod(bindPropertyType); } else if (bindPropertyType == UtilConstants.StringType && validPropertyName == "int") { - method = isNullableType ? getOtherNull.MakeGenericMethod(bindPropertyType) : getOther.MakeGenericMethod(bindPropertyType); + method = isNullableType ? IDataReaderEntityBuilderHelpers.getOtherNull.MakeGenericMethod(bindPropertyType) : IDataReaderEntityBuilderHelpers.getOther.MakeGenericMethod(bindPropertyType); } else if (bindPropertyType == UtilConstants.StringType) { - method = getString; + method = IDataReaderEntityBuilderHelpers.getString; } else { - method = isNullableType ? getOtherNull.MakeGenericMethod(bindPropertyType) : getOther.MakeGenericMethod(bindPropertyType); + method = isNullableType ? IDataReaderEntityBuilderHelpers.getOtherNull.MakeGenericMethod(bindPropertyType) : IDataReaderEntityBuilderHelpers.getOther.MakeGenericMethod(bindPropertyType); } if (method.IsVirtual) generator.Emit(OpCodes.Callvirt, method); @@ -445,13 +390,13 @@ namespace ThingsGateway.SqlSugar case CSharpDataType.@int: CheckType(bind.IntThrow, bindPropertyTypeName, validPropertyName, propertyName); if (bindPropertyTypeName.IsContainsIn("int", "int32")) - method = isNullableType ? getConvertInt32 : getInt32; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertInt32 : IDataReaderEntityBuilderHelpers.getInt32; if (bindPropertyTypeName.IsContainsIn("int64")) method = null; if (bindPropertyTypeName.IsContainsIn("byte")) - method = isNullableType ? getConvertByte : getByte; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertByte : IDataReaderEntityBuilderHelpers.getByte; if (bindPropertyTypeName.IsContainsIn("int16")) - method = isNullableType ? getConvertInt16 : getInt16; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertInt16 : IDataReaderEntityBuilderHelpers.getInt16; if (bindPropertyTypeName == "uint32" && this.Context.CurrentConnectionConfig.DbType.IsIn(DbType.MySql, DbType.MySqlConnector)) method = null; if (bindPropertyTypeName == "int16") @@ -459,21 +404,21 @@ namespace ThingsGateway.SqlSugar break; case CSharpDataType.@bool: if (bindPropertyTypeName == "bool" || bindPropertyTypeName == "boolean") - method = isNullableType ? getConvertBoolean : getBoolean; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertBoolean : IDataReaderEntityBuilderHelpers.getBoolean; break; case CSharpDataType.@string: if (this.Context.CurrentConnectionConfig.DbType != DbType.Oracle) { CheckType(bind.StringThrow, bindPropertyTypeName, validPropertyName, propertyName); } - method = getString; + method = IDataReaderEntityBuilderHelpers.getString; if (bindPropertyTypeName == "guid") { - method = isNullableType ? getConvertStringGuid : getStringGuid; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertStringGuid : IDataReaderEntityBuilderHelpers.getStringGuid; } else if (bindPropertyTypeName == "xelement") { - method = getXelement; + method = IDataReaderEntityBuilderHelpers.getXelement; } else if (dbTypeName == "CHAR" && DataRecord.GetDataTypeName(ordinal) == "CHAR(36)") { @@ -487,35 +432,35 @@ namespace ThingsGateway.SqlSugar case CSharpDataType.DateTime: CheckType(bind.DateThrow, bindPropertyTypeName, validPropertyName, propertyName); if (bindPropertyTypeName == "datetime") - method = isNullableType ? getConvertDateTime : getDateTime; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertDateTime : IDataReaderEntityBuilderHelpers.getDateTime; if (bindPropertyTypeName == "datetime" && dbTypeName.Equals("time", StringComparison.CurrentCultureIgnoreCase)) - method = isNullableType ? getConvertTime : getTime; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertTime : IDataReaderEntityBuilderHelpers.getTime; if (bindPropertyTypeName == "datetimeoffset") - method = isNullableType ? getConvertdatetimeoffset : getdatetimeoffset; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertdatetimeoffset : IDataReaderEntityBuilderHelpers.getdatetimeoffset; break; case CSharpDataType.@decimal: CheckType(bind.DecimalThrow, bindPropertyTypeName, validPropertyName, propertyName); if (bindPropertyTypeName == "decimal") - method = isNullableType ? getConvertDecimal : getDecimal; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertDecimal : IDataReaderEntityBuilderHelpers.getDecimal; break; case CSharpDataType.@float: case CSharpDataType.@double: CheckType(bind.DoubleThrow, bindPropertyTypeName, validPropertyName, propertyName); if (bindPropertyTypeName.IsIn("double", "single") && dbTypeName != "real") - method = isNullableType ? getConvertDouble : getDouble; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertDouble : IDataReaderEntityBuilderHelpers.getDouble; else - method = isNullableType ? getConvertFloat : getFloat; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertFloat : IDataReaderEntityBuilderHelpers.getFloat; if (dbTypeName.Equals("float", StringComparison.CurrentCultureIgnoreCase) && isNullableType && bindPropertyTypeName.Equals("single", StringComparison.CurrentCultureIgnoreCase)) { - method = getConvertDoubleToFloat; + method = IDataReaderEntityBuilderHelpers.getConvertDoubleToFloat; } if (bindPropertyType == UtilConstants.DecType) { - method = isNullableType ? getOtherNull.MakeGenericMethod(bindPropertyType) : getOther.MakeGenericMethod(bindPropertyType); + method = isNullableType ? IDataReaderEntityBuilderHelpers.getOtherNull.MakeGenericMethod(bindPropertyType) : IDataReaderEntityBuilderHelpers.getOther.MakeGenericMethod(bindPropertyType); } if (bindPropertyType == UtilConstants.IntType) { - method = isNullableType ? getOtherNull.MakeGenericMethod(bindPropertyType) : getOther.MakeGenericMethod(bindPropertyType); + method = isNullableType ? IDataReaderEntityBuilderHelpers.getOtherNull.MakeGenericMethod(bindPropertyType) : IDataReaderEntityBuilderHelpers.getOther.MakeGenericMethod(bindPropertyType); } if (bindPropertyTypeName == "string") { @@ -525,45 +470,45 @@ namespace ThingsGateway.SqlSugar case CSharpDataType.Guid: CheckType(bind.GuidThrow, bindPropertyTypeName, validPropertyName, propertyName); if (bindPropertyTypeName == "guid") - method = isNullableType ? getConvertGuid : getGuid; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertGuid : IDataReaderEntityBuilderHelpers.getGuid; break; case CSharpDataType.@byte: if (bindPropertyTypeName == "byte") - method = isNullableType ? getConvertByte : getByte; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertByte : IDataReaderEntityBuilderHelpers.getByte; break; case CSharpDataType.@enum: - method = isNullableType ? getConvertEnum_Null.MakeGenericMethod(bindPropertyType) : getEnum.MakeGenericMethod(bindPropertyType); + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertEnum_Null.MakeGenericMethod(bindPropertyType) : IDataReaderEntityBuilderHelpers.getEnum.MakeGenericMethod(bindPropertyType); break; case CSharpDataType.@short: CheckType(bind.ShortThrow, bindPropertyTypeName, validPropertyName, propertyName); if (bindPropertyTypeName == "int16" || bindPropertyTypeName == "short") - method = isNullableType ? getConvertInt16 : getInt16; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertInt16 : IDataReaderEntityBuilderHelpers.getInt16; break; case CSharpDataType.@long: if (bindPropertyTypeName == "int64" || bindPropertyTypeName == "long") - method = isNullableType ? getConvertInt64 : getInt64; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertInt64 : IDataReaderEntityBuilderHelpers.getInt64; break; case CSharpDataType.DateTimeOffset: - method = isNullableType ? getConvertdatetimeoffset : getdatetimeoffset; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertdatetimeoffset : IDataReaderEntityBuilderHelpers.getdatetimeoffset; if (bindPropertyTypeName == "datetime") - method = isNullableType ? getConvertdatetimeoffsetDate : getdatetimeoffsetDate; + method = isNullableType ? IDataReaderEntityBuilderHelpers.getConvertdatetimeoffsetDate : IDataReaderEntityBuilderHelpers.getdatetimeoffsetDate; break; case CSharpDataType.Single: break; default: - method = isNullableType ? getOtherNull.MakeGenericMethod(bindPropertyType) : getOther.MakeGenericMethod(bindPropertyType); + method = isNullableType ? IDataReaderEntityBuilderHelpers.getOtherNull.MakeGenericMethod(bindPropertyType) : IDataReaderEntityBuilderHelpers.getOther.MakeGenericMethod(bindPropertyType); break; } if (method == null && bindPropertyType == UtilConstants.StringType) { - method = getConvertString; + method = IDataReaderEntityBuilderHelpers.getConvertString; } if (bindPropertyType == UtilConstants.ObjType) { - method = isNullableType ? getOtherNull.MakeGenericMethod(bindPropertyType) : getOther.MakeGenericMethod(bindPropertyType); + method = isNullableType ? IDataReaderEntityBuilderHelpers.getOtherNull.MakeGenericMethod(bindPropertyType) : IDataReaderEntityBuilderHelpers.getOther.MakeGenericMethod(bindPropertyType); } if (method == null) - method = isNullableType ? getOtherNull.MakeGenericMethod(bindPropertyType) : getOther.MakeGenericMethod(bindPropertyType); + method = isNullableType ? IDataReaderEntityBuilderHelpers.getOtherNull.MakeGenericMethod(bindPropertyType) : IDataReaderEntityBuilderHelpers.getOther.MakeGenericMethod(bindPropertyType); if (method.IsVirtual) generator.Emit(OpCodes.Callvirt, method); diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DbBindProvider/IDataReaderEntityBuilderHelpers.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DbBindProvider/IDataReaderEntityBuilderHelpers.cs new file mode 100644 index 000000000..4c98aff86 --- /dev/null +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DbBindProvider/IDataReaderEntityBuilderHelpers.cs @@ -0,0 +1,65 @@ +using System.Data; +using System.Reflection; + +namespace ThingsGateway.SqlSugar +{ + internal static class IDataReaderEntityBuilderHelpers + { + + /// + /// IsDBNull方法 + /// + internal static readonly MethodInfo isDBNullMethod = typeof(IDataRecord).GetMethod(nameof(IDataRecord.IsDBNull), new Type[] { typeof(int) }); + /// + /// GetBoolean方法 + /// + internal static readonly MethodInfo getBoolean = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetBoolean), new Type[] { typeof(int) }); + /// + /// GetByte方法 + /// + internal static readonly MethodInfo getByte = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetByte), new Type[] { typeof(int) }); + /// + /// GetDateTime方法 + /// + internal static readonly MethodInfo getDateTime = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetDateTime), new Type[] { typeof(int) }); + internal static readonly MethodInfo getDecimal = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetDecimal), new[] { typeof(int) }); + internal static readonly MethodInfo getDouble = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetDouble), new[] { typeof(int) }); + internal static readonly MethodInfo getFloat = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetFloat), new[] { typeof(int) }); + internal static readonly MethodInfo getGuid = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetGuid), new[] { typeof(int) }); + internal static readonly MethodInfo getInt16 = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetInt16), new[] { typeof(int) }); + internal static readonly MethodInfo getInt32 = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetInt32), new[] { typeof(int) }); + internal static readonly MethodInfo getInt64 = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetInt64), new[] { typeof(int) }); + internal static readonly MethodInfo getString = typeof(IDataRecord).GetMethod(nameof(IDataRecord.GetString), new[] { typeof(int) }); + internal static readonly MethodInfo getdatetimeoffset = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetDateTimeOffset)); + internal static readonly MethodInfo getdatetimeoffsetDate = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetDateTimeOffsetDate)); + internal static readonly MethodInfo getStringGuid = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetStringGuid)); + internal static readonly MethodInfo getXelement = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetXelement)); + internal static readonly MethodInfo getConvertStringGuid = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertStringGuid)); + internal static readonly MethodInfo getEnum = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetEnum)); + internal static readonly MethodInfo getConvertString = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertString)); + internal static readonly MethodInfo getConvertFloat = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertFloat)); + internal static readonly MethodInfo getConvertBoolean = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertBoolean)); + internal static readonly MethodInfo getConvertByte = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertByte)); + internal static readonly MethodInfo getConvertChar = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertChar)); + internal static readonly MethodInfo getConvertDateTime = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertDateTime)); + internal static readonly MethodInfo getConvertTime = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertTime)); + internal static readonly MethodInfo getTime = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetTime)); + internal static readonly MethodInfo getConvertDecimal = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertDecimal)); + internal static readonly MethodInfo getConvertDouble = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertDouble)); + internal static readonly MethodInfo getConvertDoubleToFloat = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertDoubleToFloat)); + internal static readonly MethodInfo getConvertGuid = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertGuid)); + internal static readonly MethodInfo getConvertInt16 = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertInt16)); + internal static readonly MethodInfo getConvertInt32 = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertInt32)); + internal static readonly MethodInfo getConvertInt64 = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertInt64)); + internal static readonly MethodInfo getConvertEnum_Null = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertEnum_Null)); + internal static readonly MethodInfo getConvertdatetimeoffset = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertdatetimeoffset)); + internal static readonly MethodInfo getConvertdatetimeoffsetDate = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetConvertdatetimeoffsetDate)); + internal static readonly MethodInfo getOtherNull = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetOtherNull)); + internal static readonly MethodInfo getOther = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetOther)); + internal static readonly MethodInfo getJson = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetJson)); + internal static readonly MethodInfo getArray = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetArray)); + internal static readonly MethodInfo getEntity = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetEntity), new[] { typeof(SqlSugarProvider) }); + internal static readonly MethodInfo getMyIntNull = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetMyIntNull)); + internal static readonly MethodInfo getMyInt = typeof(IDataRecordExtensions).GetMethod(nameof(IDataRecordExtensions.GetMyInt)); + } +} \ No newline at end of file diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DbFirstProvider/DbFirstTemplate.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DbFirstProvider/DbFirstTemplate.cs index 2909b8177..0f4f02446 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DbFirstProvider/DbFirstTemplate.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DbFirstProvider/DbFirstTemplate.cs @@ -11,7 +11,7 @@ namespace ThingsGateway.SqlSugar /// /// 类模板 /// - public static string ClassTemplate = "{using}\r\n" + + public const string ClassTemplate = "{using}\r\n" + "namespace {Namespace}\r\n" + "{\r\n" + "{ClassDescription}{SugarTable}\r\n" + @@ -26,7 +26,7 @@ namespace ThingsGateway.SqlSugar /// /// 类描述模板 /// - public static string ClassDescriptionTemplate = + public const string ClassDescriptionTemplate = ClassSpace + "///\r\n" + ClassSpace + "///{ClassDescription}" + ClassSpace + "///"; @@ -34,13 +34,13 @@ namespace ThingsGateway.SqlSugar /// /// 属性模板 /// - public static string PropertyTemplate = PropertySpace + "{SugarColumn}\r\n" + + public const string PropertyTemplate = PropertySpace + "{SugarColumn}\r\n" + PropertySpace + "public {PropertyType} {PropertyName} {get;set;}\r\n"; /// /// 属性描述模板 /// - public static string PropertyDescriptionTemplate = + public const string PropertyDescriptionTemplate = PropertySpace + "/// \r\n" + PropertySpace + "/// Desc:{PropertyDescription}\r\n" + PropertySpace + "/// Default:{DefaultValue}\r\n" + @@ -50,12 +50,12 @@ namespace ThingsGateway.SqlSugar /// /// 构造函数模板 /// - public static string ConstructorTemplate = PropertySpace + " this.{PropertyName} ={DefaultValue};\r\n"; + public const string ConstructorTemplate = PropertySpace + " this.{PropertyName} ={DefaultValue};\r\n"; /// /// 命名空间模板 /// - public static string UsingTemplate = "using System;\r\n" + + public const string UsingTemplate = "using System;\r\n" + "using System.Linq;\r\n" + "using System.Text;" + "\r\n"; #endregion diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DbFirstProvider/DbRazor.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DbFirstProvider/DbRazor.cs index 60bcab946..42ae0e261 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DbFirstProvider/DbRazor.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/DbFirstProvider/DbRazor.cs @@ -19,7 +19,7 @@ namespace ThingsGateway.SqlSugar /// /// 默认Razor类模板 /// - public static string DefaultRazorClassTemplate = + public const string DefaultRazorClassTemplate = @"using System; using System.Linq; using System.Text; diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SaveableProvider/Storageable.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SaveableProvider/Storageable.cs index e7f0a8089..e7539d8e1 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SaveableProvider/Storageable.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SaveableProvider/Storageable.cs @@ -8,7 +8,7 @@ namespace ThingsGateway.SqlSugar SqlSugarProvider Context { get; set; } internal ISqlBuilder Builder; List Parameters; - IEnumerable> allDatas; + StorageableInfo[] allDatas; List dbDataList = new List(); List, bool>, string>> whereFuncs = new List, bool>, string>>(); Expression> whereExpression; @@ -24,7 +24,7 @@ namespace ThingsGateway.SqlSugar this.allDatas = datas.Select(it => new StorageableInfo() { Item = it - }); + }).ToArray(); } Expression> queryableWhereExp; @@ -209,7 +209,7 @@ namespace ThingsGateway.SqlSugar { return this.Saveable().ToStorage(); } - if (!this.allDatas.Any()) + if (this.allDatas.Length == 0) return new StorageableResult() { AsDeleteable = this.Context.Deleteable().AS(asname).Where(it => false), @@ -298,7 +298,7 @@ namespace ThingsGateway.SqlSugar { return this.Saveable().GetStorageableResult(); } - if (!this.allDatas.Any()) + if (this.allDatas.Length == 0) return new StorageableResult() { //AsDeleteable = this.Context.Deleteable().AS(asname).Where(it => false), @@ -380,7 +380,7 @@ namespace ThingsGateway.SqlSugar { return await Saveable().ToStorageAsync().ConfigureAwait(false); } - if (!this.allDatas.Any()) + if (this.allDatas.Length == 0) return new StorageableResult() { AsDeleteable = this.Context.Deleteable().AS(asname).Where(it => false), diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SaveableProvider/StorageableMethodInfo.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SaveableProvider/StorageableMethodInfo.cs index bef834ce8..8ae7a033f 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SaveableProvider/StorageableMethodInfo.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SaveableProvider/StorageableMethodInfo.cs @@ -6,7 +6,7 @@ namespace ThingsGateway.SqlSugar { internal SqlSugarProvider Context { get; set; } internal MethodInfo MethodInfo { get; set; } - internal object objectValue { get; set; } + internal object ObjValue { get; set; } public int ExecuteCommand() { if (Context == null) return 0; @@ -20,16 +20,14 @@ namespace ThingsGateway.SqlSugar { get { - var type = "AsInsertable"; - return GetAs(type); + return GetAs(nameof(AsInsertable)); } } public StorageableAsMethodInfo AsUpdateable { get { - var type = "AsUpdateable"; - return GetAs(type); + return GetAs(nameof(AsUpdateable)); } } @@ -48,9 +46,9 @@ namespace ThingsGateway.SqlSugar private MethodInfo GetSaveMethod(ref object callValue) { - if (objectValue == null) + if (ObjValue == null) return null; - callValue = MethodInfo.Invoke(Context, new object[] { objectValue }); + callValue = MethodInfo.Invoke(Context, new object[] { ObjValue }); return callValue.GetType().GetMyMethod(nameof(ExecuteCommand), 0); } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SugarProvider/SqlSugarProvider.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SugarProvider/SqlSugarProvider.cs index 5ea7d9b20..e2e6162ef 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SugarProvider/SqlSugarProvider.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Abstract/SugarProvider/SqlSugarProvider.cs @@ -1113,7 +1113,7 @@ namespace ThingsGateway.SqlSugar { Context = this.Context, MethodInfo = method, - objectValue = newList + ObjValue = newList }; return result; } @@ -1126,7 +1126,7 @@ namespace ThingsGateway.SqlSugar { Context = this.Context, MethodInfo = method, - objectValue = singleEntityObjectOrList + ObjValue = singleEntityObjectOrList }; return result; } diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/DistributedSystem/Snowflake/SnowFlakeSingle.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/DistributedSystem/Snowflake/SnowFlakeSingle.cs index cd4f7ca67..d7038ab0b 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/DistributedSystem/Snowflake/SnowFlakeSingle.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/DistributedSystem/Snowflake/SnowFlakeSingle.cs @@ -2,7 +2,7 @@ { public sealed class SnowFlakeSingle { - private static object LockObject = new object(); + private static readonly object LockObject = new object(); private static DistributedSystem.Snowflake.IdWorker worker; public static int WorkId = 1; public static int DatacenterId = 1; diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/IntegrationServices/CacheService.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/IntegrationServices/CacheService.cs index e7feab742..92f4da18b 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/IntegrationServices/CacheService.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/IntegrationServices/CacheService.cs @@ -99,10 +99,7 @@ namespace ThingsGateway.SqlSugar public void RemoveAllCache() { - foreach (var key in GetAllKey()) - { - this.Remove(key); - } + this.InstanceCache.Clear(); } public IEnumerable GetAllKey() diff --git a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Sqlite/SqlBuilder/SqliteFastBuilder.cs b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Sqlite/SqlBuilder/SqliteFastBuilder.cs index d9620f86c..06f7a2aee 100644 --- a/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Sqlite/SqlBuilder/SqliteFastBuilder.cs +++ b/src/Admin/ThingsGateway.SqlSugar/Sugar/Realization/Sqlite/SqlBuilder/SqliteFastBuilder.cs @@ -28,11 +28,12 @@ namespace ThingsGateway.SqlSugar this.Context.Close(); } } - Task CreateTempAsync(Dictionary)> list) where T : class, new() + public Task CreateTempAsync(Dictionary)> list) where T : class, new() { IsUpdate = true; return Task.FromResult(string.Empty); } + public Task CreateTempAsync(DataTable dt) where T : class, new() { @@ -175,7 +176,7 @@ namespace ThingsGateway.SqlSugar else { var count = list.FirstOrDefault().Value.Item2?.Count; - if(count==1) + if (count == 1) { var row = list.GetRows(0).ToDictionary(a => a.ColumnName, a => a.Value); cmd.CommandText = this.Context.InsertableT(row).AS(tableName).ToSqlString().Replace(";SELECT LAST_INSERT_ROWID();", ""); diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 70cbf2d8f..34f3b8200 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,9 +1,9 @@ - 10.11.93 - 10.11.93 - 10.11.93 + 10.11.94 + 10.11.94 + 10.11.94 10.11.6 10.11.6 8.0.20 @@ -12,7 +12,7 @@ false 10.11.87 10.11.87 - 4.0.0-beta.96 + 4.0.0-beta.100 diff --git a/src/Gateway/ThingsGateway.Gateway.Application/Services/Management/Management/ManagementTask.cs b/src/Gateway/ThingsGateway.Gateway.Application/Services/Management/Management/ManagementTask.cs index 1be847df2..7bc770a38 100644 --- a/src/Gateway/ThingsGateway.Gateway.Application/Services/Management/Management/ManagementTask.cs +++ b/src/Gateway/ThingsGateway.Gateway.Application/Services/Management/Management/ManagementTask.cs @@ -113,7 +113,7 @@ public partial class ManagementTask : AsyncDisposableObject .ConfigurePlugins(a => { a.UseTcpSessionCheckClear(); - a.UseDmtpRpc().ConfigureDefaultSerializationSelector(b => + a.UseDmtpRpc(a => a.ConfigureDefaultSerializationSelector(b => { b.UseSystemTextJson(json => { @@ -123,7 +123,7 @@ public partial class ManagementTask : AsyncDisposableObject json.Converters.Add(new JObjectSystemTextJsonConverter()); json.Converters.Add(new JArraySystemTextJsonConverter()); }); - }); + })); a.UseDmtpFileTransfer();//必须添加文件传输插件 @@ -176,7 +176,7 @@ public partial class ManagementTask : AsyncDisposableObject .ConfigurePlugins(a => { a.UseTcpSessionCheckClear(); - a.UseDmtpRpc().ConfigureDefaultSerializationSelector(b => + a.UseDmtpRpc(a => a.ConfigureDefaultSerializationSelector(b => { b.UseSystemTextJson(json => { @@ -186,7 +186,7 @@ public partial class ManagementTask : AsyncDisposableObject json.Converters.Add(new JObjectSystemTextJsonConverter()); json.Converters.Add(new JArraySystemTextJsonConverter()); }); - }); + })); a.UseDmtpFileTransfer();//必须添加文件传输插件 diff --git a/src/Gateway/ThingsGateway.Gateway.Application/Services/Management/Redundant/RedundancyTask.cs b/src/Gateway/ThingsGateway.Gateway.Application/Services/Management/Redundant/RedundancyTask.cs index cbd6be89f..b36cc91a3 100644 --- a/src/Gateway/ThingsGateway.Gateway.Application/Services/Management/Redundant/RedundancyTask.cs +++ b/src/Gateway/ThingsGateway.Gateway.Application/Services/Management/Redundant/RedundancyTask.cs @@ -346,7 +346,7 @@ internal sealed class RedundancyTask : IRpcDriver, IAsyncDisposable { a.UseTcpSessionCheckClear(); - a.UseDmtpRpc().ConfigureDefaultSerializationSelector(b => + a.UseDmtpRpc(a => a.ConfigureDefaultSerializationSelector(b => { b.UseSystemTextJson(json => { @@ -356,7 +356,7 @@ internal sealed class RedundancyTask : IRpcDriver, IAsyncDisposable json.Converters.Add(new JObjectSystemTextJsonConverter()); json.Converters.Add(new JArraySystemTextJsonConverter()); }); - }); + })); a.UseDmtpHeartbeat()//使用Dmtp心跳 .SetTick(TimeSpan.FromMilliseconds(redundancy.HeartbeatInterval)) .SetMaxFailCount(redundancy.MaxErrorCount); @@ -390,7 +390,7 @@ internal sealed class RedundancyTask : IRpcDriver, IAsyncDisposable .ConfigurePlugins(a => { a.UseTcpSessionCheckClear(); - a.UseDmtpRpc().ConfigureDefaultSerializationSelector(b => + a.UseDmtpRpc(a => a.ConfigureDefaultSerializationSelector(b => { b.UseSystemTextJson(json => { @@ -400,7 +400,7 @@ internal sealed class RedundancyTask : IRpcDriver, IAsyncDisposable json.Converters.Add(new JObjectSystemTextJsonConverter()); json.Converters.Add(new JArraySystemTextJsonConverter()); }); - }); + })); a.UseDmtpHeartbeat()//使用Dmtp心跳 .SetTick(TimeSpan.FromMilliseconds(redundancy.HeartbeatInterval)) .SetMaxFailCount(redundancy.MaxErrorCount); diff --git a/src/Plugin/ThingsGateway.Plugin.Kafka/ThingsGateway.Plugin.KafkaPro.csproj b/src/Plugin/ThingsGateway.Plugin.Kafka/ThingsGateway.Plugin.KafkaPro.csproj index 7eaa8171a..b4e78c2eb 100644 --- a/src/Plugin/ThingsGateway.Plugin.Kafka/ThingsGateway.Plugin.KafkaPro.csproj +++ b/src/Plugin/ThingsGateway.Plugin.Kafka/ThingsGateway.Plugin.KafkaPro.csproj @@ -17,13 +17,13 @@ ThingsGateway.Plugin.Kafka $(MSBuildProjectName) - + - + contentFiles;compile;build;buildMultitargeting;buildTransitive;analyzers; - - + + contentFiles;compile;build;buildMultitargeting;buildTransitive;analyzers; @@ -34,6 +34,6 @@ Never - +