un ORM aurait aucun moyen de déterminer qu'une colonne SQLite contient la date fois ou booléens?

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

Question

J'ai pensé à l'aide SQLite pour mon prochain projet, mais je crains que cela semble manquer datetime appropriés et les types de données bit.

Si je DbLinq (ou un autre ORM) pour générer des classes C #, seront les types de données des propriétés est « dumbed »? Est-ce que des données à jour en temps être placés dans des propriétés de type string ou double? Est-ce que les données booléen être placées dans des propriétés de type int?

Si oui, quelles sont les implications? Je suis un scénario où envisager que je dois écrire ensemble deuxième couche de classes avec des types de données plus spécifiques et de faire un tas de transformations et moulages, mais peut-être ce n'est pas aussi mauvais que je crains. Si vous avez une expérience avec ce ou un scénario similaire, comment avez-vous gérer?

Était-ce utile?

La solution

SQLite lui-même ne reconnaît que cinq types de données: NULL, INTEGER, REAL, TEXT et BLOB. Mais il vous permet de déclarer un nom de type que vous voulez, vous pouvez écrire

CREATE TABLE SomeTable (
   TimeAdded DATETIME,
   SomeFlag  BOOLEAN
);

et demandez à votre ORM interpréter les types comme vous le souhaitez.

J'ai écrit un wrapper C ++ autour SQLite, et a pris l'approche différente de représenter toutes les valeurs de base de données avec un type de variante. Cette variante permet des conversions entre les différents types, donc SqlValue("2010-05-03 01:01:04").AsTimestamp() donne l'objet d'horodatage prévu.

Autres conseils

J'utilise System.Data.SQLite et des outils de conception dans VS2008, il me donne DateTime et Bit type de données. Bien que je ne l'ai pas beaucoup idée de DbLinq. Mais DateTime et Bit types de données sont pris en charge par SqlLite

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top