我一直在考虑将sqlite用于下一个项目,但我担心它似乎缺乏适当的 datetimebit 数据类型。

如果我使用dblinq(或其他其他ORM)生成C#类,是否会“愚弄”属性的数据类型?将将日期时间数据放在类型的属性中 string 或者 double?将布尔数据放置在类型的属性中 int?

如果是,有什么意义?我设想了一个场景,我需要在其中编写具有更具体数据类型的第二层课程,并进行一系列转换和演员,但也许并不像我担心的那样糟糕。如果您对此有任何经验或类似情况,您如何处理?

有帮助吗?

解决方案

Sqlite本身仅识别五种数据类型: NULL, INTEGER, REAL, TEXT, , 和 BLOB. 。但是它使您可以声明任何想要的类型名称,因此您可以写

CREATE TABLE SomeTable (
   TimeAdded DATETIME,
   SomeFlag  BOOLEAN
);

并让您的ORM以您想要的方式解释类型。

我已经在sqlite周围编写了一个C ++包装器,并采用了用不同类型表示所有数据库值的不同方法。该变体提供了不同类型之间的转换,因此 SqlValue("2010-05-03 01:01:04").AsTimestamp() 给出预期的时间戳对象。

其他提示

我正在使用 system.data.sqlite 从VS2008中的设计工具中,它为我提供了数据类别和位数据类型。尽管我对DBLINQ的看法不多。但是DateTime和BIT数据类型由SQLLITE支持

system.data.sqlite ADO.NET提供商包含一个 SQLiteMetAdatAcollectionNames 可以让您检索有关特定表中列的各种元数据。

它包括一个“数据类型”属性,该属性描述了每列的“提示”数据类型(SQLite不强制键入)。使用此功能将允许ORM对等效C#类型进行所需的转换。

我在Zend Framework中为SQLite的适配器工作。

要获取sqlite表的元数据和数据类型,我使用了 PRAGMA TABLE_INFO( <tablename> ) 并解析其输出。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top