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

StackOverflow https://stackoverflow.com/questions/2755915

Вопрос

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

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

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

Это было полезно?

Решение

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

CREATE TABLE SomeTable (
   TimeAdded DATETIME,
   SomeFlag  BOOLEAN
);

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

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

Другие советы

я использую System.data.sqlite И из инструментов проектирования в VS2008 он дает мне тип данных DateTime и битовых данных. Хотя у меня мало идеи о dblinq. Но DateTime и битовые дата поддерживаются SQLLITE

А System.data.sqlite Поставщик ADO.net содержит SQLiteMetAdatacollectionNames Класс, который позволяет вам получить различные метадаты о столбцах в определенной таблице.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top