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)的主要内容,如果未能解决你的问题,请参考以下文章
datetime.datetime.fromtimestamp OSError: [Errno 22] Invalid argument
为啥 Datetime 的`.timestamp()` 方法返回`OSError: [Errno 22] Invalid argument`?