- 修复 DateOnly/TimeOnly 映射问题;#1868 #1855 #1763 #939 #991

This commit is contained in:
2881099
2024-08-21 02:55:16 +08:00
parent 486015a3c2
commit 2334fe2450
36 changed files with 584 additions and 76 deletions

View File

@ -16,6 +16,68 @@ namespace FreeSql.Tests.Duckdb
{
IFreeSql fsql => g.duckdb;
[Fact]
public void DateOnlyTimeOnly()
{
var item = new test_DateOnlyTimeOnly01 { testFieldDateOnly = DateOnly.FromDateTime(DateTime.Now) };
item.Id = (int)fsql.Insert(item).ExecuteIdentity();
var newitem = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item.Id).ToOne();
var now = DateTime.Parse("2024-8-20 23:00:11");
var item2 = new test_DateOnlyTimeOnly01
{
testFieldDateTime = now,
testFieldDateTimeNullable = now.AddDays(-1),
testFieldDateOnly = DateOnly.FromDateTime(now),
testFieldDateOnlyNullable = DateOnly.FromDateTime(now.AddDays(-1)),
testFieldTimeSpan = TimeSpan.FromHours(16),
testFieldTimeSpanNullable = TimeSpan.FromSeconds(90),
testFieldTimeOnly = TimeOnly.FromTimeSpan(TimeSpan.FromHours(11)),
testFieldTimeOnlyNullable = TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(90)),
};
var sqlPar = fsql.Insert(item2).ToSql();
var sqlText = fsql.Insert(item2).NoneParameter().ToSql();
Assert.Equal(sqlText, "INSERT INTO \"test_dateonlytimeonly01\"(\"testfieldtimespan\", \"testfieldtimeonly\", \"testfielddatetime\", \"testfielddateonly\", \"testfieldtimespannullable\", \"testfieldtimeonlynullable\", \"testfielddatetimenullable\", \"testfielddateonlynullable\") VALUES(time '16:0:0.0', time '11:0:0', current_timestamp, date '2024-08-20', time '0:1:30.0', time '0:1:30', current_timestamp, date '2024-08-19')");
item2.Id = (int)fsql.Insert(item2).NoneParameter().ExecuteIdentity();
var item3NP = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item2.Id).ToOne();
Assert.Equal(item3NP.testFieldDateOnly, item2.testFieldDateOnly);
Assert.Equal(item3NP.testFieldDateOnlyNullable, item2.testFieldDateOnlyNullable);
Assert.True(Math.Abs((item3NP.testFieldTimeOnly - item2.testFieldTimeOnly).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP.testFieldTimeOnlyNullable - item2.testFieldTimeOnlyNullable).Value.TotalSeconds) < 1);
item2.Id = (int)fsql.Insert(item2).ExecuteIdentity();
item3NP = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item2.Id).ToOne();
Assert.Equal(item3NP.testFieldDateOnly, item2.testFieldDateOnly);
Assert.Equal(item3NP.testFieldDateOnlyNullable, item2.testFieldDateOnlyNullable);
Assert.True(Math.Abs((item3NP.testFieldTimeOnly - item2.testFieldTimeOnly).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP.testFieldTimeOnlyNullable - item2.testFieldTimeOnlyNullable).Value.TotalSeconds) < 1);
var items = fsql.Select<test_DateOnlyTimeOnly01>().ToList();
var itemstb = fsql.Select<test_DateOnlyTimeOnly01>().ToDataTable();
}
class test_DateOnlyTimeOnly01
{
[Column(IsIdentity = true, IsPrimary = true)]
public int Id { get; set; }
public TimeSpan testFieldTimeSpan { get; set; }
public TimeOnly testFieldTimeOnly { get; set; }
[Column(ServerTime = DateTimeKind.Local)]
public DateTime testFieldDateTime { get; set; }
public DateOnly testFieldDateOnly { get; set; }
public TimeSpan? testFieldTimeSpanNullable { get; set; }
public TimeOnly? testFieldTimeOnlyNullable { get; set; }
[Column(ServerTime = DateTimeKind.Local)]
public DateTime? testFieldDateTimeNullable { get; set; }
public DateOnly? testFieldDateOnlyNullable { get; set; }
}
[Fact]
public void UInt256Crud2()
{

View File

@ -17,6 +17,69 @@ namespace FreeSql.Tests.KingbaseES
public class KingbaseESCodeFirstTest
{
[Fact]
public void DateOnlyTimeOnly()
{
var fsql = g.kingbaseES;
var item = new test_DateOnlyTimeOnly01 { testFieldDateOnly = DateOnly.FromDateTime(DateTime.Now) };
item.Id = (int)fsql.Insert(item).ExecuteIdentity();
var newitem = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item.Id).ToOne();
var now = DateTime.Parse("2024-8-20 23:00:11");
var item2 = new test_DateOnlyTimeOnly01
{
testFieldDateTime = now,
testFieldDateTimeNullable = now.AddDays(-1),
testFieldDateOnly = DateOnly.FromDateTime(now),
testFieldDateOnlyNullable = DateOnly.FromDateTime(now.AddDays(-1)),
testFieldTimeSpan = TimeSpan.FromHours(16),
testFieldTimeSpanNullable = TimeSpan.FromSeconds(90),
testFieldTimeOnly = TimeOnly.FromTimeSpan(TimeSpan.FromHours(11)),
testFieldTimeOnlyNullable = TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(90)),
};
var sqlPar = fsql.Insert(item2).ToSql();
var sqlText = fsql.Insert(item2).NoneParameter().ToSql();
Assert.Equal(sqlText, "INSERT INTO \"test_dateonlytimeonly01\"(\"testfieldtimespan\", \"testfieldtimeonly\", \"testfielddatetime\", \"testfielddateonly\", \"testfieldtimespannullable\", \"testfieldtimeonlynullable\", \"testfielddatetimenullable\", \"testfielddateonlynullable\") VALUES('16:0:0', '11:0:0', current_timestamp, '2024-08-20', '0:1:30', '0:1:30', current_timestamp, '2024-08-19')");
item2.Id = (int)fsql.Insert(item2).NoneParameter().ExecuteIdentity();
var item3NP = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item2.Id).ToOne();
Assert.Equal(item3NP.testFieldDateOnly, item2.testFieldDateOnly);
Assert.Equal(item3NP.testFieldDateOnlyNullable, item2.testFieldDateOnlyNullable);
Assert.True(Math.Abs((item3NP.testFieldTimeOnly - item2.testFieldTimeOnly).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP.testFieldTimeOnlyNullable - item2.testFieldTimeOnlyNullable).Value.TotalSeconds) < 1);
item2.Id = (int)fsql.Insert(item2).ExecuteIdentity();
item3NP = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item2.Id).ToOne();
Assert.Equal(item3NP.testFieldDateOnly, item2.testFieldDateOnly);
Assert.Equal(item3NP.testFieldDateOnlyNullable, item2.testFieldDateOnlyNullable);
Assert.True(Math.Abs((item3NP.testFieldTimeOnly - item2.testFieldTimeOnly).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP.testFieldTimeOnlyNullable - item2.testFieldTimeOnlyNullable).Value.TotalSeconds) < 1);
var items = fsql.Select<test_DateOnlyTimeOnly01>().ToList();
var itemstb = fsql.Select<test_DateOnlyTimeOnly01>().ToDataTable();
}
class test_DateOnlyTimeOnly01
{
[Column(IsIdentity = true, IsPrimary = true)]
public int Id { get; set; }
public TimeSpan testFieldTimeSpan { get; set; }
public TimeOnly testFieldTimeOnly { get; set; }
[Column(ServerTime = DateTimeKind.Local)]
public DateTime testFieldDateTime { get; set; }
public DateOnly testFieldDateOnly { get; set; }
public TimeSpan? testFieldTimeSpanNullable { get; set; }
public TimeOnly? testFieldTimeOnlyNullable { get; set; }
[Column(ServerTime = DateTimeKind.Local)]
public DateTime? testFieldDateTimeNullable { get; set; }
public DateOnly? testFieldDateOnlyNullable { get; set; }
}
[Fact]
public void Test_0String()
{

View File

@ -11,6 +11,70 @@ namespace FreeSql.Tests.MySql
{
public class MySqlCodeFirstTest
{
[Fact]
public void DateOnlyTimeOnly()
{
var fsql = g.mysql;
var item = new test_DateOnlyTimeOnly01 { testFieldDateOnly = DateOnly.FromDateTime(DateTime.Now) };
item.Id = (int)fsql.Insert(item).ExecuteIdentity();
var newitem = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item.Id).ToOne();
var now = DateTime.Parse("2024-8-20 23:00:11");
var item2 = new test_DateOnlyTimeOnly01
{
testFieldDateTime = now,
testFieldDateTimeNullable = now.AddDays(-1),
testFieldDateOnly = DateOnly.FromDateTime(now),
testFieldDateOnlyNullable = DateOnly.FromDateTime(now.AddDays(-1)),
testFieldTimeSpan = TimeSpan.FromHours(16),
testFieldTimeSpanNullable = TimeSpan.FromSeconds(90),
testFieldTimeOnly = TimeOnly.FromTimeSpan(TimeSpan.FromHours(11)),
testFieldTimeOnlyNullable = TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(90)),
};
var sqlPar = fsql.Insert(item2).ToSql();
var sqlText = fsql.Insert(item2).NoneParameter().ToSql();
Assert.Equal(sqlText, "INSERT INTO `test_DateOnlyTimeOnly01`(`testFieldTimeSpan`, `testFieldTimeOnly`, `testFieldDateTime`, `testFieldDateOnly`, `testFieldTimeSpanNullable`, `testFieldTimeOnlyNullable`, `testFieldDateTimeNullable`, `testFieldDateOnlyNullable`) VALUES('16:0:0', '11:0:0', now(3), '2024-08-20', '0:1:30', '0:1:30', now(3), '2024-08-19')");
item2.Id = (int)fsql.Insert(item2).NoneParameter().ExecuteIdentity();
var item3NP = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item2.Id).ToOne();
Assert.Equal(item3NP.testFieldDateOnly, item2.testFieldDateOnly);
Assert.Equal(item3NP.testFieldDateOnlyNullable, item2.testFieldDateOnlyNullable);
Assert.True(Math.Abs((item3NP.testFieldTimeOnly - item2.testFieldTimeOnly).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP.testFieldTimeOnlyNullable - item2.testFieldTimeOnlyNullable).Value.TotalSeconds) < 1);
item2.Id = (int)fsql.Insert(item2).ExecuteIdentity();
item3NP = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item2.Id).ToOne();
Assert.Equal(item3NP.testFieldDateOnly, item2.testFieldDateOnly);
Assert.Equal(item3NP.testFieldDateOnlyNullable, item2.testFieldDateOnlyNullable);
Assert.True(Math.Abs((item3NP.testFieldTimeOnly - item2.testFieldTimeOnly).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP.testFieldTimeOnlyNullable - item2.testFieldTimeOnlyNullable).Value.TotalSeconds) < 1);
var items = fsql.Select<test_DateOnlyTimeOnly01>().ToList();
var itemstb = fsql.Select<test_DateOnlyTimeOnly01>().ToDataTable();
}
class test_DateOnlyTimeOnly01
{
[Column(IsIdentity = true, IsPrimary = true)]
public int Id { get; set; }
public TimeSpan testFieldTimeSpan { get; set; }
public TimeOnly testFieldTimeOnly { get; set; }
[Column(ServerTime = DateTimeKind.Local)]
public DateTime testFieldDateTime { get; set; }
public DateOnly testFieldDateOnly { get; set; }
public TimeSpan? testFieldTimeSpanNullable { get; set; }
public TimeOnly? testFieldTimeOnlyNullable { get; set; }
[Column(ServerTime = DateTimeKind.Local)]
public DateTime? testFieldDateTimeNullable { get; set; }
public DateOnly? testFieldDateOnlyNullable { get; set; }
}
[Fact]
public void Test_Bool01()
{

View File

@ -28,20 +28,21 @@ namespace FreeSql.Tests.PostgreSQL
var newitem = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item.Id).ToOne();
var now = DateTime.Parse("2024-8-20 23:00:11");
var item2 = new test_DateOnlyTimeOnly01
{
testFieldDateTime = DateTime.Now,
testFieldDateTimeArray = new[] { DateTime.Now, DateTime.Now.AddHours(2) },
testFieldDateTimeArrayNullable = new DateTime?[] { DateTime.Now, null, DateTime.Now.AddHours(2) },
testFieldDateTimeNullable = DateTime.Now.AddDays(-1),
testFieldDateOnly = DateOnly.FromDateTime(DateTime.Now),
testFieldDateOnlyArray = new[] { DateOnly.FromDateTime(DateTime.Now), DateOnly.FromDateTime(DateTime.Now.AddHours(2)) },
testFieldDateOnlyArrayNullable = new DateOnly?[] { DateOnly.FromDateTime(DateTime.Now), null, DateOnly.FromDateTime(DateTime.Now.AddHours(2)) },
testFieldDateOnlyNullable = DateOnly.FromDateTime(DateTime.Now.AddDays(-1)),
testFieldDateTime = now,
testFieldDateTimeArray = new[] { now, now.AddHours(2) },
testFieldDateTimeArrayNullable = new DateTime?[] { now, null, now.AddHours(2) },
testFieldDateTimeNullable = now.AddDays(-1),
testFieldDateOnly = DateOnly.FromDateTime(now),
testFieldDateOnlyArray = new[] { DateOnly.FromDateTime(now), DateOnly.FromDateTime(now.AddHours(2)) },
testFieldDateOnlyArrayNullable = new DateOnly?[] { DateOnly.FromDateTime(now), null, DateOnly.FromDateTime(now.AddHours(2)) },
testFieldDateOnlyNullable = DateOnly.FromDateTime(now.AddDays(-1)),
testFieldTimeSpan = TimeSpan.FromDays(1),
testFieldTimeSpanArray = new[] { TimeSpan.FromDays(1), TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(60) },
testFieldTimeSpanArrayNullable = new TimeSpan?[] { TimeSpan.FromDays(1), TimeSpan.FromSeconds(10), null, TimeSpan.FromSeconds(60) },
testFieldTimeSpan = TimeSpan.FromHours(16),
testFieldTimeSpanArray = new[] { TimeSpan.FromHours(16), TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(60) },
testFieldTimeSpanArrayNullable = new TimeSpan?[] { TimeSpan.FromHours(16), TimeSpan.FromSeconds(10), null, TimeSpan.FromSeconds(60) },
testFieldTimeSpanNullable = TimeSpan.FromSeconds(90),
testFieldTimeOnly = TimeOnly.FromTimeSpan(TimeSpan.FromHours(11)),
testFieldTimeOnlyArray = new[] { TimeOnly.FromTimeSpan(TimeSpan.FromHours(11)), TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(10)), TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(60)) },
@ -51,15 +52,37 @@ namespace FreeSql.Tests.PostgreSQL
var sqlPar = fsql.Insert(item2).ToSql();
var sqlText = fsql.Insert(item2).NoneParameter().ToSql();
var item3NP = fsql.Insert(item2).NoneParameter().ExecuteInserted();
var item3NP = fsql.Insert(item2).NoneParameter().ExecuteInserted()[0];
Assert.Equal(item3NP.testFieldDateOnly, item2.testFieldDateOnly);
Assert.Equal(item3NP.testFieldDateOnlyArray[0], item2.testFieldDateOnlyArray[0]);
Assert.Equal(item3NP.testFieldDateOnlyArray[1], item2.testFieldDateOnlyArray[1]);
Assert.Equal(item3NP.testFieldDateOnlyNullable, item2.testFieldDateOnlyNullable);
Assert.True(Math.Abs((item3NP.testFieldTimeOnly - item2.testFieldTimeOnly).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP.testFieldTimeOnlyArray[0] - item2.testFieldTimeOnlyArray[0]).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP.testFieldTimeOnlyArray[1] - item2.testFieldTimeOnlyArray[1]).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP.testFieldTimeOnlyNullable - item2.testFieldTimeOnlyNullable).Value.TotalSeconds) < 1);
var item3 = fsql.Insert(item2).ExecuteInserted().First();
var newitem2 = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item3.Id).ToOne();
Assert.True(item2.testFieldDateTime.Subtract( newitem2.testFieldDateTime).TotalSeconds <= 0);
item3NP = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item3.Id).ToOne();
Assert.Equal(item3NP.testFieldDateOnly, item2.testFieldDateOnly);
Assert.Equal(item3NP.testFieldDateOnlyArray[0], item2.testFieldDateOnlyArray[0]);
Assert.Equal(item3NP.testFieldDateOnlyArray[1], item2.testFieldDateOnlyArray[1]);
Assert.Equal(item3NP.testFieldDateOnlyNullable, item2.testFieldDateOnlyNullable);
Assert.True(Math.Abs((item3NP.testFieldTimeOnly - item2.testFieldTimeOnly).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP.testFieldTimeOnlyArray[0] - item2.testFieldTimeOnlyArray[0]).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP.testFieldTimeOnlyArray[1] - item2.testFieldTimeOnlyArray[1]).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP.testFieldTimeOnlyNullable - item2.testFieldTimeOnlyNullable).Value.TotalSeconds) < 1);
item3 = fsql.Insert(item2).NoneParameter().ExecuteInserted().First();
newitem2 = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item3.Id).ToOne();
Assert.True(item3.testFieldDateTime.Subtract(newitem2.testFieldDateTime).TotalSeconds <= 0);
item3NP = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item3.Id).ToOne();
Assert.Equal(item3NP.testFieldDateOnly, item2.testFieldDateOnly);
Assert.Equal(item3NP.testFieldDateOnlyArray[0], item2.testFieldDateOnlyArray[0]);
Assert.Equal(item3NP.testFieldDateOnlyArray[1], item2.testFieldDateOnlyArray[1]);
Assert.Equal(item3NP.testFieldDateOnlyNullable, item2.testFieldDateOnlyNullable);
Assert.True(Math.Abs((item3NP.testFieldTimeOnly - item2.testFieldTimeOnly).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP.testFieldTimeOnlyArray[0] - item2.testFieldTimeOnlyArray[0]).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP.testFieldTimeOnlyArray[1] - item2.testFieldTimeOnlyArray[1]).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP.testFieldTimeOnlyNullable - item2.testFieldTimeOnlyNullable).Value.TotalSeconds) < 1);
var items = fsql.Select<test_DateOnlyTimeOnly01>().ToList();
var itemstb = fsql.Select<test_DateOnlyTimeOnly01>().ToDataTable();

View File

@ -12,6 +12,81 @@ namespace FreeSql.Tests.SqlServer
{
public class SqlServerCodeFirstTest
{
[Fact]
public void DateOnlyTimeOnly()
{
var fsql = g.sqlserver;
var item = new test_DateOnlyTimeOnly01 { testFieldDateOnly = DateOnly.FromDateTime(DateTime.Now) };
item.Id = (int)fsql.Insert(item).ExecuteIdentity();
fsql.Aop.AuditDataReader += (s, e) =>
{
;
};
var newitem = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item.Id).ToOne();
var now = DateTime.Parse("2024-8-20 23:00:11");
var item2 = new test_DateOnlyTimeOnly01
{
testFieldDateTime = now,
testFieldDateTimeNullable = now.AddDays(-1),
testFieldDateOnly = DateOnly.FromDateTime(now),
testFieldDateOnlyNullable = DateOnly.FromDateTime(now.AddDays(-1)),
testFieldTimeSpan = TimeSpan.FromHours(16),
testFieldTimeSpanNullable = TimeSpan.FromSeconds(90),
testFieldTimeOnly = TimeOnly.FromTimeSpan(TimeSpan.FromHours(11)),
testFieldTimeOnlyNullable = TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(90)),
};
var sqlPar = fsql.Insert(item2).ToSql();
var sqlText = fsql.Insert(item2).NoneParameter().ToSql();
Assert.Equal(sqlText, "INSERT INTO [test_DateOnlyTimeOnly01]([testFieldTimeSpan], [testFieldTimeOnly], [testFieldDateTime], [testFieldDateOnly], [testFieldTimeSpanNullable], [testFieldTimeOnlyNullable], [testFieldDateTimeNullable], [testFieldDateOnlyNullable]) VALUES('16:0:0.0', '11:0:0', getdate(), '2024-08-20', '0:1:30.0', '0:1:30', getdate(), '2024-08-19')");
var item3NP = fsql.Insert(item2).NoneParameter().ExecuteInserted();
Assert.Equal(item3NP[0].testFieldDateOnly, item2.testFieldDateOnly);
Assert.Equal(item3NP[0].testFieldDateOnlyNullable, item2.testFieldDateOnlyNullable);
Assert.True(Math.Abs((item3NP[0].testFieldTimeOnly - item2.testFieldTimeOnly).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP[0].testFieldTimeOnlyNullable - item2.testFieldTimeOnlyNullable).Value.TotalSeconds) < 1);
var item3 = fsql.Insert(item2).ExecuteInserted().First();
var newitem2 = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item3.Id).ToOne();
Assert.Equal(item3NP[0].testFieldDateOnly, item2.testFieldDateOnly);
Assert.Equal(item3NP[0].testFieldDateOnlyNullable, item2.testFieldDateOnlyNullable);
Assert.True(Math.Abs((item3NP[0].testFieldTimeOnly - item2.testFieldTimeOnly).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP[0].testFieldTimeOnlyNullable - item2.testFieldTimeOnlyNullable).Value.TotalSeconds) < 1);
item3 = fsql.Insert(item2).NoneParameter().ExecuteInserted().First();
newitem2 = fsql.Select<test_DateOnlyTimeOnly01>().Where(a => a.Id == item3.Id).ToOne();
Assert.Equal(item3NP[0].testFieldDateOnly, item2.testFieldDateOnly);
Assert.Equal(item3NP[0].testFieldDateOnlyNullable, item2.testFieldDateOnlyNullable);
Assert.True(Math.Abs((item3NP[0].testFieldTimeOnly - item2.testFieldTimeOnly).TotalSeconds) < 1);
Assert.True(Math.Abs((item3NP[0].testFieldTimeOnlyNullable - item2.testFieldTimeOnlyNullable).Value.TotalSeconds) < 1);
var items = fsql.Select<test_DateOnlyTimeOnly01>().ToList();
var itemstb = fsql.Select<test_DateOnlyTimeOnly01>().ToDataTable();
}
class test_DateOnlyTimeOnly01
{
[Column(IsIdentity = true, IsPrimary = true)]
public int Id { get; set; }
public TimeSpan testFieldTimeSpan { get; set; }
public TimeOnly testFieldTimeOnly { get; set; }
[Column(ServerTime = DateTimeKind.Local)]
public DateTime testFieldDateTime { get; set; }
public DateOnly testFieldDateOnly { get; set; }
public TimeSpan? testFieldTimeSpanNullable { get; set; }
public TimeOnly? testFieldTimeOnlyNullable { get; set; }
[Column(ServerTime = DateTimeKind.Local)]
public DateTime? testFieldDateTimeNullable { get; set; }
public DateOnly? testFieldDateOnlyNullable { get; set; }
}
[Fact]
public void VersionInt()
{