Sería un ORM tienen ninguna manera de determinar que una columna contiene la fecha SQLite veces o booleanos?

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

Pregunta

He estado pensando acerca del uso de SQLite para mi próximo proyecto, pero me preocupa que parece carecer de los tipos de datos y datetime bit adecuados.

Si utilizo DbLinq (o algún otro ORM) para generar clases de C #, serán los tipos de datos de las propiedades de ser "disminuidos"? Se colocarán los datos de fecha y hora en las propiedades de string tipo o double? Boolean se pueden colocar los datos en las propiedades de tipo int?

En caso afirmativo, ¿cuáles son las implicaciones? Estoy imaginando un escenario en el que tengo que escribir una segunda capa entera de clases con tipos de datos más específicos y hacer un montón de transformaciones y moldes, pero tal vez no es tan malo como me temo. Si usted tiene alguna experiencia con esto o un escenario similar, ¿cómo manejarlo?

¿Fue útil?

Solución

SQLite sí reconoce sólo cinco tipos de datos: NULL, INTEGER, REAL, TEXT y BLOB. Pero le permite declarar cualquier tipo nombre que desee, para que pueda escribir

CREATE TABLE SomeTable (
   TimeAdded DATETIME,
   SomeFlag  BOOLEAN
);

y haga que su ORM interpretar los tipos de la forma en que desea.

He escrito en C ++ envoltura alrededor de SQLite, y tomó el enfoque diferente de representar todos los valores de base de datos con un tipo de variante. Esta variante ofrece las conversiones entre los diferentes tipos, por lo SqlValue("2010-05-03 01:01:04").AsTimestamp() da el objeto de marca de tiempo esperado.

Otros consejos

Estoy usando System.Data.SQLite y de las herramientas de diseño en VS2008, me da DateTime y el tipo de datos Bit. Aunque no tengo mucha idea sobre DbLinq. Pero DateTime y el bit tipos de datos son compatibles con SqlLite

El proveedor System.Data.SQLite ADO.NET contiene un clase SQLiteMetaDataCollectionNames que le permite recuperar los diversos meta -Los datos acerca de las columnas en una tabla específica.

Incluye una propiedad 'DataTypes' que describe el tipo de datos 'indicio' (SQLite no fuerza la tipificación estricta) de cada columna. El uso de este permitiría un ORM a continuación, realizar la conversión necesaria a / desde el tipo C # equivalente.

Yo trabajaba en un adaptador para SQLite en Zend Framework.

Para obtener metadatos y tipos de datos para una tabla SQLite, que utiliza PRAGMA TABLE_INFO( <tablename> ) y analizada su de salida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top