如果要映射的字段之一具有DateTime字段,并且DB中的相应值具有'0000-00-00'或'0001-01-01',则请求执行失败。返回以下错误

无法将mysql日期/时间值转换为system.datetime

是否有可能获得这种价值?

我尝试指定“日期时间?”价值作为属性类型 - 它也无济于事(实际上,我没想到这会有所帮助)。

PS我使用mysql 5.1

有帮助吗?

解决方案

在异常情况下,我使用NHIBERNATE遇到了类似的问题。

这是由于MySQL在日期字段中允许无效日期的唯一“功能”,尤其是使用0000-00-00作为日期而不是null列的默认值。当遇到这样的日期时,当自身转换为日期时间时,它会引发异常。

建议的解决方案是添加

允许零dateTime = true;

对于连接字符串,实际上这对我不起作用。我最终通过更改连接字符串添加来解决问题

转换零dateTime = true;

所以您的app.config部分看起来像这样

  <connectionStrings>
<add
  name="ConnectionString.MySql"
  connectionString="Server=localhost;Port=3306;Database=BLT;Uid=someuser;Convert Zero DateTime=true;"
  providerName="MySql.Data.MySqlClient"/>

其他提示

您是否尝试过MapValue属性?我不确定这是否会起作用,但是...

[MapValue(null, "0000-00-00")]
[MapValue(null, "0001-01-01")]
public DateTime? theDate;

我认为您必须通过另一个属性来控制它。

 [MapField("the_date")]
 public DateTime? theDate; // Map
 [MapIgnore]
 public DateTime theDateControl
 {
     set {
         if(theDate.HasValue)
         {
            ....
         }
     }
 }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top