2012-05-14 11 views
6

Uso sqlite3 con lenguaje c recientemente. ¿Alguien puede decirme algún ORM conveniente para c? ¿Es necesario desarrollar un mecanismo de ORM para mis propios proyectos?¿Hay algún marco de librería ORM conveniente para c?

+2

Parece que cualquiera que quiera un ORM es poco probable que codifique en C .. –

+0

¿Qué tiene en mente dado que C generalmente no tiene la parte del objeto de ese acrónimo? – Justin

+2

me he preguntado acerca de esto también (algún tipo de biblioteca para automatizar el acceso desde c); probablemente asignaría una estructura a una fila en una tabla. ¿Pueden los downvoters/closers explicar por qué? –

Respuesta

2

Tener una necesidad de ORM me sugiere que tiene en mente algún tipo de modelo de objeto de negocio/dominio que desea asignar a una base de datos.

Si ese es el caso, me da la impresión de que está tratando de escribir una aplicación comercial en el lenguaje más adecuado para la programación de sistemas (C). Es posible que desee considerar si esta es una buena estrategia arquitectónica.

Por otra parte, no creo que jamás ORM es probable que sea una buena opción para un lenguaje que:

  1. en sí no es orientado a objetos
  2. no tiene mucho apoyo a la meta programación/reflexión que tiende a ser central en muchos esquemas ORM

Finalmente, hay muchas personas que creen que ORM es un antipatrón en cualquier caso. (example, example, example)

En general, mi sugerencia sería que o bien:

  • Evitar el ORM por completo si va a seguir utilizando C
  • Cambiar a un lenguaje/plataforma donde ORM es al menos bien soportado y se ajusta al paradigma (más obviamente Java)
+0

Muchas gracias. Las sugerencias son útiles. Mi intención original es evitar manipulaciones repetidas para acceder al DB. Porque encontré muchos códigos de repetición en mi proyecto.Escribí algún mecanismo para hacerlo, pero es tan difícil de abstraer por completo. Considero encontrar ORM primero, y hay pocos. –

0

Una breve búsqueda en Google se le ocurrió esto: http://ales.jikos.cz/smorm/

nunca he usado, así que no me culpes si se cambia el formato de todas las unidades de disco duro y hace que su refrigerador justo lo suficientemente caliente como para estropear su leche, pero parece que podría ser mejor que nada si realmente no desea escribir consultas.

+0

oh sí. Parece que los autores no tienen la confianza para sus API. –

3

escribí this library como un "ORM para C".

código de ejemplo se parece a:

typedef struct person { 
    int id; 
    char *name; 
} person; 

void find_by_name(isti_db *db, const char *text, person** result) { 
    corm_person_select *s; 
    corm_person_select_alloc(&s, db); 
    s->name(s, "like", text)->_go_one(s, result); // populate result from the database 
    s->_free(s, 0); // in "real" code, 0 is a chained status value 
} 

por desgracia, no está en uso en cualquier parte (por lo que sé) y que incluye un buen número de ideas que avezados programadores C podría encontrar extraño. pero no está abandonado: sigo interesado en el problema y espero continuar trabajando en él en algún momento.

Cuestiones relacionadas