MySQL.Data DateTime.Kind SQL DATETIME 和 TIMESTAMP 不同

MySQL.Data DateTime.Kind being different between SQL DATETIME and TIMESTAMP

所以我更新到 MySql.Data 8.0.13 并且我注意到我的 TIMESTAMP 字段显示为 DateTimeKind.LocalDATETIME 字段被读取为 DateTimeKind.Unspecified

我认为 "Timestamp" 是一个很好的语义类型来表示 "CreatedTime" 字段,所以我选择了它。

问题是,我通常在插入查询中写这些日期 "manually",它们是由应用程序生成的,采用 UTC 格式,以确保本地时间和它们疯狂的 timezones/daylight 节省不会破坏任何东西。我不对它们使用 on-update 或 on-insert。现在我遇到了应用程序的 JSON 序列化程序将已经 UTC 时间再次转换为 UTC 的问题,这会导致错误的偏移时间。

所以我的问题是:

有没有办法将 MySQL.Data 强制执行到 "Consider those dates/timestamps as being UTC"?还是我最好停止使用 TIMESTAMP 并坚持使用 DATETIME? 还是我应该像这样搞个疯狂的噱头?

if(databaseValue is DateTime dt) {
     databaseValue = new DateTime(dt.Ticks, DateTimeKind.UTC);
}

哪种方法更适合解决这个问题?

有一个替代库MySqlConnector which has a DateTimeKind option you can specify in the connection string:

The DateTimeKind used when MySqlDataReader returns a DateTime. If set to Utc or Local, a MySqlException will be thrown if a DateTime command parameter has a Kind of Local or Utc, respectively.