2013-08-26 48 views
0

我正在使用ServiceStack + OrmLite,並且在OrmLite中保存DateTimeOffset對象時遇到了一些問題。ServiceStack + OrmLite日期格式問題

我需要用中性文化格式(例如ISO8601)將其保存到SQL Server數據庫中,因此當用戶更改他的文化時,它不會對寫入數據庫的方式產生任何影響,因爲現在它正在生成Conversion failed when converting date and/or time from character string.文化轉換問題導致的錯誤。

有沒有OrmLite配置選項或類似的東西來避免這個問題?

+0

有些代碼會有幫助。那麼你可以看看這個https://groups.google.com/forum/#!topic/servicestack/sYRX5OaPMsk它可能有助於解決你的問題。 – kunjee

回答

0

SQL Server中的日期/時間類型,包括datetimedatetimeoffset未與任何文化一起存儲。它們不是作爲字符串存儲的。它們在內部以二進制表示形式存儲。

如果C#中的類使用DateTimeOffset類型的屬性,並且SQL Server中的表使用datetimeoffset類型的列,則字符串(和文化)不應該輸入圖片。

如果您手動製作了一個SQL字符串並將您的值內聯而不是使用參數,那麼您可能會得到字符串。但是我懷疑一個ORM會犯這個錯誤。

或者你是否想將DateTimeOffset的字符串表示填充到varchar字段中?

發佈一些代碼,以便我們可以看到你在做什麼。

+0

我設法解決了這個問題,我不知道爲什麼OrmLite似乎正在爲DateTimeOffset對象執行某種類型的轉換。 我的數據庫字段爲DateTimeOffset(7),POCO聲明爲DateTimeOffset,我也沒有人工製作SQL查詢。 我剛將POCO字段更改爲DateTime,現在它的作用就像一個魅力,我想我可能會在github上打開一個bug報告。 但是,謝謝你的時間! – PizergSensing

+0

聽起來可能有一個錯誤,所以是的 - 請與他們打開一個問題。 –

+1

經過進一步調查後,我發現發生了什麼事情,似乎OrmLite沒有正確地爲DateTimeOffset字段構建SQL查詢 – PizergSensing