我有一个这样的实体:
public class Datum
{
public long Id { get; set; }
public DateTimeOffset TimeStamp { get; set; }
}
当我想用下面的代码查询Timestamp
时:
var now = DateTimeOffset.Now;
var data = await Context.Data.Where(d => d.TimeStamp > now).ToListAsync();
我得到以下错误:
无法将Offset=02:00:00的DateTimeOffset写入PostgreSQL类型“timestamp with time zone”,仅支持偏移量0(UTC)。请注意,不可能在数组/范围中将DateTimes与不同的种类混合使用。请参见Npgsql.EnableLegacyTimestampBehavior AppContext开关以启用旧行为。
当我想以这种方式添加Datum
值时,也会发生同样的情况:
var now = DateTimeOffset.Now;
Context.Data.Add(new Datum()
{
TimeStamp = now,
});
await Context.SaveChangesAsync();
我知道我可以使用DateTimeOffset.UtcNow
,但我真实的的软件有点复杂,我不想每次都手动转换它。我只想让EFCore在UTC时间内自动将每个DateTimeOffset
对象转换为一个对象,而无需在每次更新和查询时手动执行。
1条答案
按热度按时间e5nszbig1#
最好的方法是在get/set中执行