2010-05-03 53 views
6

我一直在考慮爲我的下一個項目使用SQLite,但我擔心它似乎缺少正確的datetimebit數據類型。ORM是否有任何方式確定SQLite列包含日期時間或布爾值?

如果我使用DbLinq(或其他一些ORM)來生成C#類,那麼這些屬性的數據類型是否會「虛弱」?將日期 - 時間數據置於stringdouble類型的屬性中?將布爾數據置於int類型的屬性中嗎?

如果是,有什麼影響?我在設想一個場景,我需要用更具體的數據類型編寫整個第二層類,並進行一系列轉換和轉換,但也許並不像我擔心的那樣糟糕。如果您有任何有關此類或類似情況的經驗,您是如何處理它的?

回答

1

的SQLite本身只承認五種數據類型的支持。但它可以讓你聲明任何你想要的類型名稱,所以你可以寫

CREATE TABLE SomeTable (
    TimeAdded DATETIME, 
    SomeFlag BOOLEAN 
); 

和你的ORM解釋的類型,你想要的方式。

我已經寫了一個C++包裝SQLite,並採取不同的方法來表示所有數據庫值與變體類型。該變體提供了不同類型之間的轉換,因此SqlValue("2010-05-03 01:01:04").AsTimestamp()給出了預期的時間戳記對象。

+0

只要使用'datetime'和'bit'作爲數據類型就可以和DbLinq一起使用,謝謝。 – devuxer 2010-05-03 19:48:01

0

我使用System.Data.SQLite和VS2008中的設計工具,它給了我DateTime和Bit數據類型。雖然我對DbLinq沒有太多的想法。 NULLINTEGERREALTEXT,並BLOB:但是,DateTime和位數據類型由SqlLite

0

System.Data.SQLite ADO.NET提供程序包含一個SQLiteMetaDataCollectionNames類,它允許您檢索有關特定表中列的各種元數據。

它包含一個'DataTypes'屬性,用於描述每列的'提示'數據類型(SQLite不強制嚴格鍵入)。使用這將允許ORM然後執行所需的轉換到/從等效的C#類型。

0

我在Zend Framework中使用SQLite的適配器。

要獲取SQLite表的元數據和數據類型,我使用了PRAGMA TABLE_INFO(<tablename>)並分析了它的輸出。

相關問題