我遇到了一个看起来似乎是PostgreSQL或Devart数据库连接库出现了错误的问题。以下是我创建的一个简单测试应用程序:
我期望在控制台输出的两行文本是相同的,但第二行总是最后一位为0。例如:
这是因为PostgreSQL的精度问题造成的,如果我使用SqlServer作为数据库,则此测试可以正常工作。是否可以更改PostgreSQL设置来解决这个问题?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DateTimeOffsetTest
{
class Program
{
static void Main(string[] args)
{
using (var context = new Context())
{
var e = new Ent() { CreatedOn = DateTimeOffset.Now };
Console.WriteLine(e.CreatedOn.UtcDateTime.Ticks);
context.Ents.Add(e);
context.SaveChanges();
}
using (var context = new Context())
{
var ent = context.Ents.Single();
Console.WriteLine(ent.CreatedOn.UtcDateTime.Ticks);
Console.Read();
context.Ents.Remove(ent);
context.SaveChanges();
}
}
}
}
我期望在控制台输出的两行文本是相同的,但第二行总是最后一位为0。例如:
![Test output](https://istack.dev59.com/B2Hr6.webp)