如果其中一個要映射的字段具有DateTime字段,並且數據庫中的對應值具有'0000-00-00'或'0001-01-01',則請求執行失敗。返回以下錯誤BLToolKit:如何獲取'空'日期時間字段?
無法MySQL的日期/時間值轉換爲System.DateTime
是否有可能獲取這樣的價值呢?
我試過指定'DateTime?'價值作爲財產類型 - 它也沒有幫助(實際上,我沒有想到會有所幫助)。
P.S.我使用MySql 5.1
如果其中一個要映射的字段具有DateTime字段,並且數據庫中的對應值具有'0000-00-00'或'0001-01-01',則請求執行失敗。返回以下錯誤BLToolKit:如何獲取'空'日期時間字段?
無法MySQL的日期/時間值轉換爲System.DateTime
是否有可能獲取這樣的價值呢?
我試過指定'DateTime?'價值作爲財產類型 - 它也沒有幫助(實際上,我沒有想到會有所幫助)。
P.S.我使用MySql 5.1
我遇到了一個類似的問題使用NHibernate與異常相同的錯誤。
這是由於MySQL在DATE字段中允許無效日期的獨特「功能」,特別是使用0000-00-00作爲DATE NOT NULL列的默認值。遇到這樣的日期時,它將自身轉換爲DateTime時會引發異常。
此所建議的解決方案是添加
允許零日期時間= TRUE;
連接字符串,但實際上這並不適用於我。我最終通過改變連接字符串來添加
Convert 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)
{
....
}
}
}
沒有嘗試,但謝謝。 – Budda 2011-06-03 01:47:13