【发布时间】: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 的最后一篇文章这是我实现的东西,非常适合我自己的情况
标签: c# entity-framework datetime mono linq-to-entities