Müsste ein ORM irgendeine Art und Weise zu bestimmen, dass eine SQLite Spalte Datum-mal oder booleans enthält?

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

Frage

Ich habe nachgedacht über die Verwendung von SQLite für mein nächstes Projekt, aber ich bin besorgt darüber, dass es die richtigen datetime und bit Datentypen zu fehlen scheint.

Wenn ich DbLinq (oder eine andere ORM) verwenden C # -Klassen zu erzeugen, werden die Datentypen der Eigenschaften sein „verdummt“? Wird Datum Zeitdaten in den Eigenschaften des Typs string oder double platziert werden? Wird boolean Daten in Eigenschaften des Typs int platziert werden?

Wenn ja, was sind die Folgen? Ich Vorstellungsvermögen ein Szenario, wo ich brauche eine ganze zweite Schicht von Klassen mit mehr spezifischen Datentypen zu schreiben und eine Reihe von Transformationen und Abgüsse tun, aber es ist vielleicht nicht so schlimm, wie ich fürchte. Wenn Sie keine Erfahrung mit diesem oder einem ähnlichen Szenario haben, wie Sie damit umgegangen?

War es hilfreich?

Lösung

SQLite selbst erkennt nur fünf Datentypen: NULL, INTEGER, REAL, TEXT und BLOB. Aber es lässt Sie jede Art Namen erklären, dass Sie möchten, so können Sie schreiben

CREATE TABLE SomeTable (
   TimeAdded DATETIME,
   SomeFlag  BOOLEAN
);

und haben Ihre ORM die Typen, die Art und Weise interpretieren Sie wollen.

Ich habe einen C ++ Wrapper um SQLite geschrieben und nahm den anderen Ansatz zu repräsentieren alle Datenbankwerte mit einer Variante Typ. Diese Variante bietet Konvertierungen zwischen verschiedenen Arten, so SqlValue("2010-05-03 01:01:04").AsTimestamp() die erwartete Zeitmarke Objekt gibt.

Andere Tipps

Ich bin mit System.Data.SQLite und von Design-Tool in VS2008, es gibt mir Datetime und Bit-Datentyp. Obwohl ich nicht viel Ahnung von DbLinq haben. Aber Datetime und Bit-Datentypen werden unterstützt durch SqlLite

Der System.Data.SQLite ADO.NET-Provider enthält ein SQLiteMetaDataCollectionNames Klasse, dass Sie die verschiedenen Meta abrufen können -Daten über die Spalten in einer bestimmten Tabelle.

Es enthält eine ‚Datatypes‘ Eigenschaft, die den ‚Hinweis‘ Datentyp beschreibt (SQLite erzwingt nicht die strikte Typisierung) jede Spalte. Mit diesem würde ein ORM ermöglichen, dann die erforderliche Umstellung auf / von dem # Typ äquivalent C durchführen.

arbeitete ich an einem Adapter für SQLite in Zend Framework.

Um Metadaten und Datentypen für eine SQLite Tisch zu bekommen, habe ich PRAGMA TABLE_INFO( <tablename> ) und analysierte seine Ausgabe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top