Merge pull request #1980 from d4ilys/master

修复TDengine插入Datetime默认值查询异常
This commit is contained in:
2881099
2025-02-18 15:20:58 +08:00
committed by GitHub
3 changed files with 102 additions and 3 deletions

View File

@@ -4,7 +4,7 @@ using Xunit;
namespace FreeSql.Tests.Provider.TDengine.TDengine.TDengineAdo
{
public class TDengineAdoTest
public class TDengineCrudTest
{
IFreeSql fsql => g.tdengine;

View File

@@ -0,0 +1,72 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FreeSql.DataAnnotations;
using Newtonsoft.Json;
using Xunit.Abstractions;
namespace FreeSql.Tests.Provider.TDengine.TDengine.TDengineIssue
{
public class TDengineIssueTest
{
private IFreeSql _fsql;
private ITestOutputHelper _output;
public TDengineIssueTest(ITestOutputHelper output)
{
_fsql = g.tdengine;
_output = output;
}
[Fact]
void CodeFirst1977()
{
_fsql.CodeFirst.SyncStructure(typeof(TDengineProcessMetrics1977));
}
[Fact]
void SelectTest1977()
{
var data = _fsql.Select<TDengineProcessMetrics1977>()
.ToList();
_output.WriteLine(JsonConvert.SerializeObject(data));
}
[Fact]
void InsertTest1977()
{
var insertAffrows = _fsql.Insert(new TDengineProcessMetrics1977()
{
Timestamp = DateTime.Now,
HostName = "host6"
}
).ExecuteAffrows();
Assert.Equal(1, insertAffrows);
}
}
public class TDengineProcessMetrics1977
{
/// <summary>
/// 数据时间戳
/// </summary>
[Column(Name = "ts")]
public DateTime Timestamp { get; set; }
/// <summary>
/// 主机名
/// </summary>
[Column(Name = "host_name")]
public string HostName { get; set; }
/// <summary>
/// 进程启动时间
/// </summary>
[Column(Name = "start_time")]
public DateTime StartTime { get; set; }
}
}

View File

@@ -43,6 +43,31 @@ namespace FreeSql.TDengine
// e.ModifyResult.IsIgnore = true;
//};
//TDengine 特殊处理:
this.Aop.AuditDataReader += (_, e) =>
{
var dataTypeName = e.DataReader.GetDataTypeName(e.Index);
switch (dataTypeName)
{
case "TIMESTAMP":
try
{
var value = e.DataReader.GetValue(e.Index);
if (value != null)
e.Value = e.DataReader.GetDateTime(e.Index);
else
e.Value = null;
return;
}
catch
{
e.Value = new DateTime();
return;
}
}
};
//处理参数化
this.Aop.CommandBefore += (_, e) =>
{
@@ -75,7 +100,8 @@ namespace FreeSql.TDengine
public override IUpdate<T1> CreateUpdateProvider<T1>(object dywhere)
{
throw new NotImplementedException($"FreeSql.Provider.TDengine {CoreErrorStrings.S_Not_Implemented_Feature}");
throw new NotImplementedException(
$"FreeSql.Provider.TDengine {CoreErrorStrings.S_Not_Implemented_Feature}");
}
public override IDelete<T1> CreateDeleteProvider<T1>(object dywhere)
@@ -85,7 +111,8 @@ namespace FreeSql.TDengine
public override IInsertOrUpdate<T1> CreateInsertOrUpdateProvider<T1>()
{
throw new NotImplementedException($"FreeSql.Provider.TDengine {CoreErrorStrings.S_Not_Implemented_Feature}");
throw new NotImplementedException(
$"FreeSql.Provider.TDengine {CoreErrorStrings.S_Not_Implemented_Feature}");
}
~TDengineProvider() => this.Dispose();