2012-05-14 16 views
6

Tôi sử dụng sqlite3 với ngôn ngữ c gần đây. Bất cứ ai có thể cho tôi biết một số ORM thuận tiện cho c? Có cần thiết để phát triển một cơ chế ORM cho các dự án của riêng tôi không?Có một số khung thư viện ORM thuận tiện cho c không?

+2

Có vẻ như bất kỳ ai muốn có ORM không chắc sẽ được mã hóa trong C .. –

+0

Bạn nghĩ gì khi C thường thiếu phần Object của từ viết tắt đó? – Justin

+2

tôi đã tự hỏi về điều này quá (một số loại thư viện để tự động truy cập từ c); nó có lẽ sẽ ánh xạ một cấu trúc đến một hàng trong một bảng. xin vui lòng downvoters/closers giải thích tại sao? –

Trả lời

2

Có nhu cầu về ORM đề xuất với tôi rằng bạn có một số loại mô hình đối tượng kinh doanh/tên miền trong tâm trí mà bạn muốn ánh xạ tới cơ sở dữ liệu.

Nếu trường hợp đó xảy ra, thì nó sẽ đánh tôi rằng bạn đang cố gắng viết một ứng dụng doanh nghiệp bằng ngôn ngữ phù hợp nhất cho lập trình hệ thống (C). Bạn có thể muốn xem xét liệu đây có phải là một chiến lược kiến ​​trúc tốt hay không.

Hơn nữa, tôi không nghĩ rằng ORM là bao giờ có thể sẽ là một sự phù hợp tốt cho một ngôn ngữ đó:

  1. Không phải là bản thân đối tượng định hướng-
  2. Không có nhiều sự hỗ trợ cho meta- lập trình/phản ánh có xu hướng trở thành trung tâm của nhiều sơ đồ ORM

Cuối cùng, có nhiều người tin rằng ORM là một mẫu chống trong mọi trường hợp. (example, example, example)

Nhìn chung, đề nghị của tôi sẽ là một trong hai:

  • Tránh ORM hoàn toàn nếu bạn có kế hoạch để tiếp tục sử dụng C
  • Chuyển sang ngôn ngữ/nền tảng nơi ORM là ít nhất được hỗ trợ tốt và phù hợp với mô hình (rõ ràng nhất là Java)
+0

Cảm ơn bạn rất nhiều. Các đề xuất hữu ích. Ý định ban đầu của tôi là tránh thao tác lặp lại để truy cập DB. Bởi vì tôi tìm thấy nhiều mã lặp lại trong dự án của tôi.Tôi đã viết một số cơ chế để làm như vậy, nhưng nó rất khó để trừu tượng hoàn toàn. Tôi xem xét để tìm ORM đầu tiên, và có rất ít. –

0

Một tìm kiếm google ngắn gọn đến với điều này: http://ales.jikos.cz/smorm/

Tôi chưa bao giờ sử dụng nó, do đó, không đổ lỗi cho tôi nếu nó định dạng lại tất cả các ổ đĩa cứng của bạn và làm cho tủ lạnh của bạn vừa đủ ấm để làm hỏng sữa của bạn, nhưng có vẻ như nó có thể tốt hơn không có gì nếu bạn thực sự không muốn viết truy vấn.

+0

oh yeah. dường như các tác giả không tin tưởng vào API của mình .. –

3

tôi đã viết this library là "ORM cho C".

dụ mã trông giống như:

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 
} 

không may, nó không sử dụng bất cứ nơi nào (như xa như tôi biết) và nó bao gồm một vài ý kiến ​​cho rằng các lập trình viên dày dạn c có thể tìm thấy lẻ. nhưng nó không bị bỏ rơi - tôi vẫn quan tâm đến vấn đề này và hy vọng sẽ tiếp tục làm việc trên nó vào một thời điểm nào đó.

Các vấn đề liên quan