2012-05-14 11 views
6

Używam ostatnio sqlite3 z językiem c. Czy ktoś może mi powiedzieć jakieś wygodne ORM dla c? Czy istnieje potrzeba opracowania mechanizmu ORM dla moich własnych projektów?Czy istnieje jakiś wygodny framework biblioteki ORM dla c?

+2

Wygląda na to, że każdy, kto chciałby, aby ORM najprawdopodobniej nie kodował w C .. –

+0

Co masz na myśli, skoro na ogół brakuje na ogół części Object tego akronimu? – Justin

+2

również się nad tym zastanawiałem (jakaś biblioteka do automatyzacji dostępu z c); prawdopodobnie mapowałoby strukturę do wiersza w tabeli. proszę, czy spadkowcy/zamykacze wyjaśniają, dlaczego? –

Odpowiedz

2

Potrzebuję ORM sugeruje, że masz jakiś model obiektu biznesowego/domeny na uwadze, że chcesz mapować do bazy danych.

Jeśli tak, to wydaje mi się, że próbujesz napisać aplikację biznesową w języku najlepiej dostosowanym do programowania systemów (C). Możesz zastanowić się, czy jest to dobra strategia architektoniczna.

Ponadto nie sądzę ORM jest coraz częściej być dobrym rozwiązaniem dla języka, który:

  1. nie jest sama w sobie obiektowe
  2. nie ma wiele wsparcia dla meta- programowanie/odbijanie, które zwykle ma kluczowe znaczenie dla wielu systemów ORM

Wreszcie, istnieje wiele osób, które uważają, że ORM jest anty-wzorem w każdym przypadku. (example, example, example)

Ogólnie rzecz biorąc, moja propozycja będzie albo:

  • Unikać ORM w ogóle, jeśli masz zamiar kontynuować przy użyciu C
  • przełączyć się języka/platformy gdzie ORM jest co najmniej dobrze obsługiwane i pasuje do paradygmatu (oczywiście Java)
+0

Dziękuję bardzo. Sugestie są pomocne. Moim początkowym zamiarem jest uniknięcie wielokrotnego manipulowania w celu uzyskania dostępu do bazy danych. Ponieważ znalazłem w moim projekcie wiele kodów powtórzeń.Napisałem do tego jakiś mechanizm, ale trudno go całkowicie streścić. Najpierw znajduję ORM i jest ich niewiele. –

0

Krótka wyszukiwarka google wymyślił to: http://ales.jikos.cz/smorm/

nigdy nie użył go, więc nie wiń mnie, czy to formatuje wszystkie dyski twarde i sprawia, że ​​lodówka wystarczająco ciepło, aby zepsuć mleko, ale wygląda na to, że może być lepiej niż nic, jeśli naprawdę nie chcesz pisać zapytań.

+0

o tak. wydaje się, że autorzy nie mają zaufania do swoich API. –

3

Napisałem this library jako "ORM dla C".

przykładowy kod wygląda następująco:

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 
} 

niestety, to nie jest w użyciu wszędzie (o ile wiem) i zawiera sporo pomysłów, które zaprawiony programistów C może znaleźć dziwne. ale to nie jest porzucone - nadal jestem zainteresowany problemem i mam nadzieję, że będę mógł kontynuować pracę nad nim w pewnym momencie.

Powiązane problemy