ORM имел бы какой-либо способ решить, что столбец SQLite содержит времена даты или булевские переменные?

Я думал об использовании SQLite для моего следующего проекта, но я обеспокоен, что этому, кажется, недостает надлежащий datetime и bit типы данных.

Если я использую DbLinq (или некоторый другой ORM) для генерации классов C#, будут типы данных свойств быть "dumbed вниз"? Будет данные даты и времени быть помещенными в свойства типа string или double? Будет булевы данные быть помещенными в свойства типа int?

Если да, каковы последствия? Я предполагаю сценарий, где я должен записать целый второй слой классов с более определенными типами данных и сделать набор преобразований и бросков, но возможно это не настолько плохо, как я боюсь. Если у Вас есть опыт с этим или подобным сценарием, как Вы обрабатывали его?

6
задан devuxer 3 May 2010 в 17:17
поделиться

4 ответа

Сам SQLite распознает только пять типов данных: NULL , INTEGER , REAL , TEXT и BLOB ]. Но он позволяет вам объявить любое имя типа, которое вы хотите, поэтому вы можете написать

CREATE TABLE SomeTable (
   TimeAdded DATETIME,
   SomeFlag  BOOLEAN
);

и ваш ORM интерпретирует типы так, как вы хотите.

Я написал оболочку C ++ для SQLite и использовал другой подход, представляя все значения базы данных с помощью вариантного типа. Этот вариант обеспечивает преобразование между различными типами, поэтому SqlValue ("2010-05-03 01:01:04"). AsTimestamp () дает ожидаемый объект отметки времени.

1
ответ дан 17 December 2019 в 22:11
поделиться

Поставщик ADO.NET System.Data.SQLite содержит класс SQLiteMetaDataCollectionNames , который позволяет получать различные метаданные о столбцах в определенной таблице.

Он включает свойство DataTypes, которое описывает тип данных «подсказка» (SQLite не требует строгой типизации) каждого столбца. Использование этого позволит ORM выполнить необходимое преобразование в / из эквивалентного типа C #.

0
ответ дан 17 December 2019 в 22:11
поделиться

Я использую System.Data.SQLite , и из инструментов дизайна в VS2008 он дает мне тип данных DateTime и Bit. Хотя я не очень разбираюсь в DbLinq. Но типы данных DateTime и Bit поддерживаются SqlLite

0
ответ дан 17 December 2019 в 22:11
поделиться

Я работал над адаптером для SQLite в Zend Framework.

Чтобы получить метаданные и типы данных для таблицы SQLite, я использовал PRAGMA TABLE_INFO () и проанализировал его вывод.

0
ответ дан 17 December 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: