diff --git a/JiShe.CollectBus.sln b/JiShe.CollectBus.sln
index f02dd6e..272514c 100644
--- a/JiShe.CollectBus.sln
+++ b/JiShe.CollectBus.sln
@@ -66,6 +66,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.CollectBus.Analyzers.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.CollectBus.Analyzers", "modules\JiShe.CollectBus.Analyzers\JiShe.CollectBus.Analyzers.csproj", "{EB97C7BB-1E4A-CBA4-04C1-22DBF48A253A}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.CollectBus.Migration.Application.Contracts", "services\JiShe.CollectBus.Migration.Application.Contracts\JiShe.CollectBus.Migration.Application.Contracts.csproj", "{E01625B5-B5B7-7A4B-468F-EC12C1BDBA2A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.CollectBus.Migration.Application", "services\JiShe.CollectBus.Migration.Application\JiShe.CollectBus.Migration.Application.csproj", "{B955C5DA-3C20-35D2-0770-8FE473C41C44}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.CollectBus.Migration.Host", "web\JiShe.CollectBus.Migration.Host\JiShe.CollectBus.Migration.Host.csproj", "{995D3D91-7221-D4A3-A7B2-FEC202328A18}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.CollectBus.Migration.HttpApi", "web\JiShe.CollectBus.Migration.HttpApi\JiShe.CollectBus.Migration.HttpApi.csproj", "{8A113DE5-7D50-6E6B-739F-B6EEAD5E13B4}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -160,6 +168,22 @@ Global
{EB97C7BB-1E4A-CBA4-04C1-22DBF48A253A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB97C7BB-1E4A-CBA4-04C1-22DBF48A253A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB97C7BB-1E4A-CBA4-04C1-22DBF48A253A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E01625B5-B5B7-7A4B-468F-EC12C1BDBA2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E01625B5-B5B7-7A4B-468F-EC12C1BDBA2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E01625B5-B5B7-7A4B-468F-EC12C1BDBA2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E01625B5-B5B7-7A4B-468F-EC12C1BDBA2A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B955C5DA-3C20-35D2-0770-8FE473C41C44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B955C5DA-3C20-35D2-0770-8FE473C41C44}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B955C5DA-3C20-35D2-0770-8FE473C41C44}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B955C5DA-3C20-35D2-0770-8FE473C41C44}.Release|Any CPU.Build.0 = Release|Any CPU
+ {995D3D91-7221-D4A3-A7B2-FEC202328A18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {995D3D91-7221-D4A3-A7B2-FEC202328A18}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {995D3D91-7221-D4A3-A7B2-FEC202328A18}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {995D3D91-7221-D4A3-A7B2-FEC202328A18}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8A113DE5-7D50-6E6B-739F-B6EEAD5E13B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8A113DE5-7D50-6E6B-739F-B6EEAD5E13B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8A113DE5-7D50-6E6B-739F-B6EEAD5E13B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8A113DE5-7D50-6E6B-739F-B6EEAD5E13B4}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -187,6 +211,10 @@ Global
{75B7D419-C261-577D-58D6-AA3ACED9129F} = {3C3F9DB2-EC97-4464-B49F-BF1A0C2B46DC}
{DD68F314-BC66-5601-B094-B1A7BE93F4E0} = {EBF7C01F-9B4F-48E6-8418-2CBFDA51EB0B}
{EB97C7BB-1E4A-CBA4-04C1-22DBF48A253A} = {2E0FE301-34C3-4561-9CAE-C7A9E65AEE59}
+ {E01625B5-B5B7-7A4B-468F-EC12C1BDBA2A} = {BA4DA3E7-9AD0-47AD-A0E6-A0BB6700DA23}
+ {B955C5DA-3C20-35D2-0770-8FE473C41C44} = {BA4DA3E7-9AD0-47AD-A0E6-A0BB6700DA23}
+ {995D3D91-7221-D4A3-A7B2-FEC202328A18} = {A02F7D8A-04DC-44D6-94D4-3F65712D6B94}
+ {8A113DE5-7D50-6E6B-739F-B6EEAD5E13B4} = {A02F7D8A-04DC-44D6-94D4-3F65712D6B94}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD}
diff --git a/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs b/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs
index 9212cda..00a7129 100644
--- a/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs
+++ b/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs
@@ -577,19 +577,43 @@ namespace JiShe.CollectBus.IncrementalGenerator
var elementDeclaredName = element.Type.Name;//元组元素类型名称
initializerLines.Add(
- $"new EntityMemberInfo(" +
- $"\"{prop.Name}.{elementName}\", " +
- $"typeof({elementType}), " +
- $"typeof({elementType}).Name, " +//$"\"{elementDeclaredName}\", " +
- $"(e) => Get{prop.Name}_{elementName}(({entityType})e), " +
- $"(e, v) => Set{prop.Name}_{elementName}(({entityType})e, ({elementType})v))");
- }
- }
- }
+ $"new EntityMemberInfo(" +
+ $"\"{prop.Name}.{elementName}\", " +
+ $"typeof({elementType}), " +
+ $"GetValueTupleElementDeclaredTypeName(typeof({elementType})), " +//$"\"{elementDeclaredName}\", " +
+ $"(e) => Get{prop.Name}_{elementName}(({entityType})e), " +
+ $"(e, v) => Set{prop.Name}_{elementName}(({entityType})e, ({elementType})v))");
+ }
+ }
+ }
- code.AppendLine(string.Join(",\n", initializerLines));
- code.AppendLine(" };");
- }
+ code.AppendLine(string.Join(",\n", initializerLines));
+ code.AppendLine(" };");
+
+ code.AppendLine(GetValueTupleElementName());
+ }
+
+ private static string GetValueTupleElementName()
+ {
+ return """
+ public static string GetValueTupleElementDeclaredTypeName(Type declaredType)
+ {
+ string typeName;
+ // 处理可空类型
+ if (declaredType.IsGenericType && declaredType.GetGenericTypeDefinition() == typeof(Nullable<>))
+ {
+ Type underlyingType = Nullable.GetUnderlyingType(declaredType);
+ typeName = underlyingType.Name;
+ }
+ else
+ {
+ typeName = declaredType.Name;
+ }
+
+ return typeName;
+ }
+ """;
+ }
private static string GenerateAttributeInitializer(AttributeData attribute)
diff --git a/modules/JiShe.CollectBus.IoTDB/Context/IoTDBRuntimeContext.cs b/modules/JiShe.CollectBus.IoTDB/Context/IoTDBRuntimeContext.cs
index ef68325..7384716 100644
--- a/modules/JiShe.CollectBus.IoTDB/Context/IoTDBRuntimeContext.cs
+++ b/modules/JiShe.CollectBus.IoTDB/Context/IoTDBRuntimeContext.cs
@@ -7,7 +7,7 @@ namespace JiShe.CollectBus.IoTDB.Context
///
/// IoTDB SessionPool 运行时上下文
///
- public class IoTDBRuntimeContext: IScopedDependency
+ public class IoTDBRuntimeContext: IScopedDependency//ITransientDependency
{
private readonly bool _defaultValue;
diff --git a/modules/JiShe.CollectBus.IoTDB/Interface/IIoTDBProvider.cs b/modules/JiShe.CollectBus.IoTDB/Interface/IIoTDBProvider.cs
index 82a0d47..a5d885d 100644
--- a/modules/JiShe.CollectBus.IoTDB/Interface/IIoTDBProvider.cs
+++ b/modules/JiShe.CollectBus.IoTDB/Interface/IIoTDBProvider.cs
@@ -16,6 +16,8 @@ namespace JiShe.CollectBus.IoTDB.Interface
///// 是否使用表模型
//void SwitchSessionPool(bool useTableSession);
+ IIoTDbProvider GetSessionPool(bool sessionpolType);
+
///
/// 插入数据
///
diff --git a/modules/JiShe.CollectBus.IoTDB/Model/IoTEntity.cs b/modules/JiShe.CollectBus.IoTDB/Model/IoTEntity.cs
index 9df2488..da14d20 100644
--- a/modules/JiShe.CollectBus.IoTDB/Model/IoTEntity.cs
+++ b/modules/JiShe.CollectBus.IoTDB/Model/IoTEntity.cs
@@ -44,7 +44,11 @@ namespace JiShe.CollectBus.IoTDB.Model
/// 时标,也就是业务时间戳,单位毫秒,必须通过DateTimeOffset获取
///
public long Timestamps { get; set; } = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
-
+
+ ///
+ /// 设备路径
+ ///
+ private string _devicePath;
///
/// 设备路径
///
@@ -52,18 +56,16 @@ namespace JiShe.CollectBus.IoTDB.Model
{
get
{
- return $"root.{SystemName.ToLower()}.`{ProjectId}`.`{DeviceType}`.{DataType}.`{DeviceId}`";
+ // 如果未手动设置路径,则自动生成
+ if (string.IsNullOrWhiteSpace(_devicePath))
+ {
+ return $"root.{SystemName.ToLower()}.`{ProjectId}`.`{DeviceType}`.{DataType}.`{DeviceId}`";
+ }
+ return _devicePath;
}
set
- {
- if (string.IsNullOrWhiteSpace(value))
- {
- DevicePath = $"root.{SystemName.ToLower()}.`{ProjectId}`.`{DeviceType}`.{DataType}.`{DeviceId}`";
- }
- else
- {
- DevicePath = value;
- }
+ {
+ _devicePath = value; // 直接赋值给支持字段,避免递归
}
}
}
diff --git a/modules/JiShe.CollectBus.IoTDB/Options/QueryCondition.cs b/modules/JiShe.CollectBus.IoTDB/Options/QueryCondition.cs
index 40dd443..bccf017 100644
--- a/modules/JiShe.CollectBus.IoTDB/Options/QueryCondition.cs
+++ b/modules/JiShe.CollectBus.IoTDB/Options/QueryCondition.cs
@@ -1,4 +1,7 @@
-namespace JiShe.CollectBus.IoTDB.Options
+using JiShe.CollectBus.Common.Extensions;
+using JiShe.CollectBus.Common.Helpers;
+
+namespace JiShe.CollectBus.IoTDB.Options
{
///
/// 查询条件
@@ -19,10 +22,43 @@
/// 是否数值,如果是数值,则进行数值比较,否则进行字符串比较
///
public bool IsNumber { get; set; } = false;
-
+
+ private object _rawValue;
///
/// 值
///
- public object Value { get; set; }
+ public object Value
+ {
+ get => ApplyValueConversion(_rawValue);
+ set => _rawValue = value;
+ }
+
+ ///
+ /// 值转换
+ ///
+ ///
+ ///
+ private object ApplyValueConversion(object rawValue)
+ {
+ string declaredTypeName = rawValue.GetType().Name;
+
+ Func