maybe not bug maybe is

Dec 2, 2009 at 11:23 AM

MysqL的日期允许输入

0000-00-00 00:00:00

如果这样的时候

就读不出来数据了

不过貌似这个错误没法修复吧。。。。因为从这MySql.Data.Types.MySqlDateTime.GetDateTime()抛出的。。。

[MySqlConversionException: Unable to convert MySQL date/time value to System.DateTime]
   MySql.Data.Types.MySqlDateTime.GetDateTime() +92
   MySql.Data.Types.MySqlDateTime.MySql.Data.Types.IMySqlValue.get_Value() +35
   MySql.Data.MySqlClient.MySqlDataReader.GetString(Int32 i) +248
   $2.LoadSimpleValuesByIndex(Object , IDataReader ) +791
   Lephone.Data.Common.EmitObjectHandlerBase.LoadSimpleValues(Object o, Boolean useIndex, IDataReader dr) +50
   Lephone.Data.Common.ObjectInfo.CreateObject(DbContext context, Type DbObjectType, IDataReader dr, Boolean UseIndex) +292
   Lephone.Data.<>c__DisplayClass23.<DataLoadDirect>b__22(IDataReader dr) +98
   Lephone.Data.SqlEntry.<>c__DisplayClass19.<ExecuteDataReader>b__18() +250
   Lephone.Data.SqlEntry.DataProvider.UsingConnection(CallbackVoidHandler callback) +56
   Lephone.Data.SqlEntry.DataProvider.ExecuteDataReader(SqlStatement Sql, Type ReturnType, CallbackObjectHandler`1 callback) +155
   Lephone.Data.DbContext.DataLoadDirect(IProcessor ip, Type returnType, Type dbObjectType, SqlStatement sql, Boolean useIndex) +271
   Lephone.Data.DbContext.DataLoadDirect(IProcessor ip, Type dbObjectType, SqlStatement sql, Boolean useIndex) +51
   Lephone.Data.DbContext.DataLoadDirect(IProcessor ip, Type dbObjectType, SqlStatement sql) +45
   Lephone.Data.DbContext.DataLoad(IProcessor ip, Type dbObjectType, FromClause from, WhereCondition iwc, OrderBy oc, Range lc, Boolean isDistinct) +151
   Lephone.Data.DbContext.FillCollection(IList list, Type dbObjectType, WhereCondition iwc, OrderBy oc, Range lc, Boolean isDistinct) +82
   Lephone.Data.DbContext.FillCollection(IList list, Type dbObjectType, WhereCondition iwc, OrderBy oc, Range lc) +51
   Lephone.Data.QuerySyntax.QueryContent`1.Select() +209
   Lephone.Data.Definition.DbObjectModelBase`2.FindAll() +191

Coordinator
Dec 2, 2009 at 11:59 AM

我也觉得这和DbEntry没关系,要就直接修改MySql的Provider。

另外,日期输入0000-00-00 00:00:00是什么意思呢?无意义的时间?真的需要的话,应该设置成可空列吧。

Dec 2, 2009 at 12:15 PM

就是说遇到这种数据库就必须先改它里面的值再用Dbentry读

要不就读不出来

Coordinator
Dec 2, 2009 at 12:59 PM

大概是这样的。

就算是个Bug,也是MySql的Provider的Bug,毕竟System.DateTime是支持0000-00-00 00:00:00这个时间的,所以GetDateTime理应返回正常的DateTime,但是它却抛出了一个异常。

我记得MySql的Provider是有源代码的,自己修改一下,或者把Bug提交给MySql都行。