ORM 有什么方法可以确定 SQLite 列包含日期时间或布尔值吗?

发布于 2024-08-30 17:52:16 字数 344 浏览 6 评论 0原文

我一直在考虑在下一个项目中使用 SQLite,但我担心它似乎缺乏正确的 datetimebit 数据类型。

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

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

I've been thinking about using SQLite for my next project, but I'm concerned that it seems to lack proper datetime and bit data types.

If I use DbLinq (or some other ORM) to generate C# classes, will the data types of the properties be "dumbed down"? Will date-time data be placed in properties of type string or double? Will boolean data be placed in properties of type int?

If yes, what are the implications? I'm envisioning a scenario where I need to write a whole second layer of classes with more specific data types and do a bunch of transformations and casts, but maybe it's not as bad as I fear. If you have any experience with this or a similar scenario, how did you handle it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

围归者 2024-09-06 17:52:16

SQLite 本身只识别五种数据类型:NULLINTEGERREALTEXTBLOB< /代码>。但它允许您声明您想要的任何类型名称,因此您可以

CREATE TABLE SomeTable (
   TimeAdded DATETIME,
   SomeFlag  BOOLEAN
);

按照您想要的方式编写并让 ORM 解释类型。

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

SQLite itself recognizes only five data types: NULL, INTEGER, REAL, TEXT, and BLOB. But it lets you declare any type name that you want, so you can write

CREATE TABLE SomeTable (
   TimeAdded DATETIME,
   SomeFlag  BOOLEAN
);

and have your ORM interpret the types the way you want to.

I've written a C++ wrapper around SQLite, and took the different approach of representing all database values with a variant type. This variant provides conversions between different types, so SqlValue("2010-05-03 01:01:04").AsTimestamp() gives the expected timestamp object.

你的背包 2024-09-06 17:52:16

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

I'm using System.Data.SQLite and from Design tools in VS2008, it gives me DateTime and Bit data type. Although I've not much idea about DbLinq. But DateTime and Bit datatypes are supported by SqlLite

浮华 2024-09-06 17:52:16

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

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

The System.Data.SQLite ADO.NET provider contains a SQLiteMetaDataCollectionNames class that allows you to retrieve the various meta-data about the columns in a specific table.

It includes a 'DataTypes' property that describes the 'hint' data type (SQLite doesn't enforce strict typing) of each column. Using this would allow an ORM to then perform the required conversion to/from the equivalent C# type.

站稳脚跟 2024-09-06 17:52:16

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

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

I worked on an adapter for SQLite in Zend Framework.

To get metadata and data types for an SQLite table, I used PRAGMA TABLE_INFO( <tablename> ) and parsed its output.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文