6

我一直在考虑在我的下一个项目中使用 SQLite,但我担心它似乎缺少适当的datetime数据bit类型。

如果我使用 DbLinq(或其他一些 ORM)生成 C# 类,属性的数据类型会被“简化”吗?日期时间数据是否会放置在 typestring或的属性中double?布尔数据是否会放置在 type 的属性中int

如果是,有什么影响?我正在设想一个场景,我需要编写具有更具体数据类型的整个第二层类,并进行大量转换和强制转换,但也许它没有我担心的那么糟糕。如果您对这种情况或类似情况有任何经验,您是如何处理的?

4

4 回答 4

1

SQLite 本身只识别五种数据类型:NULLINTEGERREALTEXTBLOB。但它允许你声明任何你想要的类型名称,所以你可以写

CREATE TABLE SomeTable (
   TimeAdded DATETIME,
   SomeFlag  BOOLEAN
);

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

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

于 2010-05-03T06:08:49.407 回答
0

我正在使用System.Data.SQLite和 VS2008 中的设计工具,它为我提供了 DateTime 和 Bit 数据类型。虽然我对 DbLinq 不太了解。但是 SqlLite 支持 DateTime 和 Bit 数据类型

于 2010-05-03T05:38:08.870 回答
0

System.Data.SQLite ADO.NET 提供程序包含一个SQLiteMetaDataCollectionNames类,该类允许您检索有关特定表中列的各种元数据。

它包括一个“DataTypes”属性,该属性描述了每列的“提示”数据类型(SQLite 不强制执行严格类型)。使用这将允许 ORM 然后执行所需的与等效 C# 类型之间的转换。

于 2010-05-03T06:46:34.887 回答
0

我在 Zend Framework 中为 SQLite 开发了一个适配器。

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

于 2010-05-03T19:00:06.453 回答