DateTime 列上的 Mono InvalidOperationException (SQL Server)

Posted

技术标签:

【中文标题】DateTime 列上的 Mono InvalidOperationException (SQL Server)【英文标题】:Mono InvalidOperationException on DateTime column (SQL Server) 【发布时间】:2015-10-08 14:13:58 【问题描述】:

我无法将 SQL Server 中的 DateTime2 列映射到 OS X 上 Mono 上的 DateTime 列。

created_at 在 sql 端定义为 DateTime2 不可为空的列,我在 c# 端定义为public DateTime created_at get; set;

我得到了这个例外:

InvalidOperationException: The 'created_at' property on 'revision' could not be set to a 'System.String' value. You must set this property to a non-null value of type 'System.DateTime'.

但是,在 Windows 上运行我的项目时,同样的定义也适用。

【问题讨论】:

我也有同样的问题。不幸的是,这似乎是当前的 Mono 限制,因为我偶然发现了this question。你是如何解决这个问题的? @unagi SQL 服务器将此列报告为 mono 实现的旧协议版本中的字符串。当我提升协议版本时,服务器在我发送登录数据包后关闭连接。我最终在某处修补了 GetValue 函数:我尝试将 每个字符串 解析为日期时间,当它抛出异常时我返回字符串,否则我返回日期时间。但是如果您将日期时间存储为字符串,它会抛出异常,因此我没有打开对 Mono 存储库的合并请求(不好的解决方法)。寻找代码会让您随时了解情况。 @unagi 查看github.com/mono/mono/pull/1773#issuecomment-136125909 的最后一篇文章这是我实现的东西,非常适合我自己的情况 【参考方案1】:

请试试这个

public DateTime created_at  get; set;  

它会帮助你...

【讨论】:

以上是关于DateTime 列上的 Mono InvalidOperationException (SQL Server)的主要内容,如果未能解决你的问题,请参考以下文章

2列上的间隙和岛-如果A列连续且B列相同

datetime.datetime.fromtimestamp OSError: [Errno 22] Invalid argument

确保在 Informix DATETIME 列上使用索引

为啥 Datetime 的`.timestamp()` 方法返回`OSError: [Errno 22] Invalid argument`?

Laravel9版本的CMS出现Invalid datetime format异常

Laravel9版本的CMS出现Invalid datetime format异常