2009-05-27 38 views
5

Tôi cần thu thập một số thông tin về các giải pháp ORM hiện có. Xin vui lòng viết về bất kỳ ngôn ngữ lập trình nào.Các khuôn khổ ORM

Bạn có thể nói về khung ORM tốt nhất mà bạn từng sử dụng và lý do tại sao nó tốt hơn những người khác?

+1

Không có điều gì như ORM "ngôn ngữ độc lập" ngoại trừ trong .net, nhưng thậm chí nó sẽ chỉ hoạt động trên các ngôn ngữ .net) – Nir

+0

Cảm ơn các bạn, Tôi thực sự không phải là điều tôi muốn nói. –

+0

Với điều này quá mơ hồ và chủ quan, tôi bị cám dỗ để biến nó thành CW ... bất kỳ suy nghĩ nào? –

Trả lời

6

Tôi đã sử dụng NHibernate và Entity Framework.

Phiên bản khung thực thể ổn định hiện tại rất chưa trưởng thành. Quá khó hoặc không thể thực hiện các tác vụ thông thường. Kiểm tra mã của bạn cũng rất khó vì bạn không thể tách riêng các thực thể khỏi các lớp truy cập dữ liệu của bạn. Nhưng nó hoàn toàn tích hợp với ide visual studio. Thiết lập dễ dàng và cập nhật tất cả các mô hình từ cơ sở dữ liệu chỉ mất vài giây. Phiên bản sắp tới của EF (4.0) sẽ giải quyết một số vấn đề này.

NHibernate khá mạnh mẽ. Nó hỗ trợ các đối tượng clr cũ, vì vậy bạn có thể làm việc với các thực thể đơn giản. Cấu hình cung cấp kiểm soát tuyệt vời chi tiết tuyệt vời. Các khả năng của khung được thỏa mãn và nó có một cộng đồng lớn và năng động và tài liệu tốt. Thiết lập và cập nhật các thực thể là một chút khó khăn vì bạn phải sử dụng các trình tạo máy tìm kiếm cơ sở dữ liệu của bạn và tạo ra các thực thể và các tệp xml. Nó có thể là khó khăn để tìm một máy phát điện hoặc một mẫu hoàn toàn phù hợp với nhu cầu của bạn. Nhưng một khi bạn thiết lập tất cả mọi thứ, bạn sẽ thích nó.

3

Tôi thấy LINQ to SQL là một giải pháp khá đơn giản. Lần đầu tiên tôi sử dụng nó, tôi muốn nói rằng tôi đã có một ORM cơ bản làm việc trong vòng một vài giờ, và đã tạo ra các truy vấn LINQ với nó.

Microsoft đã thêm một ORM (Entity Framework), mà tôi đã từng nghe là phức tạp hơn nhưng có thể hữu ích cho các ứng dụng phân phối rất phức tạp với nhiều nguồn dữ liệu, vv

Nói chung tôi thấy LINQ to được một cách dễ dàng và nhanh để sử dụng ORM.

2

Tôi đã xem xét Telerik Open Access trong vài tháng qua, trong ORM này là một nỗi đau để làm việc, nó được quảng cáo là có hỗ trợ LINQ rộng rãi nhưng thực tế nhiều tính năng LINQ bạn thường mong đợi không phía máy chủ làm việc và được thực hiện trên máy khách. Tôi cũng gặp vấn đề khi sử dụng nhiều điều kiện trong mệnh đề where, xem question cuối cùng của tôi. Dưới đây là một vài điều mà tôi tìm thấy

  • Không hỗ trợ cho quan điểm
  • Không thể để ánh xạ nhiều hơn một thực thể với cùng bảng
  • Thừa kế và hỗ trợ giao diện đòi hỏi bạn phải thực hiện thay đổi đối với bạn trong CSDL
  • Không thiết kế trực quan như LINQ to SQL và Entity Framework
  • Nếu bạn muốn thực hiện một chèn bất kỳ đơn vị có liên quan phải được lấy đầu tiên

Rohan

+1

Đối với hồ sơ, tôi nghĩ rằng đánh giá này của OpenAccess ORM đã lỗi thời và không chính xác. OpenAccess có hỗ trợ LINQ hoàn chỉnh, ngang hàng với các .NET ORM khác, một Visual Designer phong phú, cùng với hỗ trợ cho các khung nhìn, các procs được lưu trữ và các tính năng vượt ra ngoài các hệ thống như EF và NH (như Domain Service Wizard). Tôi muốn khuyến khích bạn kiểm tra các phiên bản mới nhất để so sánh chính xác hơn: http://www.telerik.com/products/orm.aspx – Todd

+2

Bạn nhận ra rằng điều này đã được viết lại vào năm 2009? –

1

LINQ2SQL là tốt đẹp, EF có ý nghĩa, nhưng rất phức tạp và SQL Server định hướng. NHibernate là đặc biệt và Telerik OpenAccess (hoàn toàn .NET/Visual Studio) có một bộ rộng các chức năng và hỗ trợ chuyên nghiệp.

Kể từ khi tôi biết sản phẩm tôi có thể nhận xét về mối quan tâm của Rohan của:

  • sẵn Số lần xem có thể được sử dụng và xem ủng hộ hoàn toàn là đến
  • Mapping nhiều hơn một thực thể với cùng bàn "hoạt động" cho phân cấp lớp, giới hạn với ánh xạ ngược tồn tại
  • Hỗ trợ kế thừa và Interfacer "không yêu cầu" thay đổi lược đồ cơ sở dữ liệu, giới hạn lại với ánh xạ ngược tồn tại mặc dù
  • Trình thiết kế trực quan sẽ đến, Chuyển tiếp và ánh xạ ngược Wiza rds phép bạn đã làm bất cứ điều gì một cách dễ dàng
  • Có một cách giải quyết cho vấn đề chèn đề cập và nó sẽ được cố định thường

Kiểm tra các trang web Telerik để tìm khách hàng hài lòng và cảm thấy tự do sử dụng diễn đàn telerik và tài nguyên hỗ trợ cho bất kỳ câu hỏi nào.

-Peter

+1

bạn rõ ràng là một nhân viên bán hàng Telerik. Tôi cũng đã sử dụng Telerik OpenAccess ORM và không muốn nó trên kẻ thù tồi tệ nhất của tôi. TCP/IP là bắt buộc để xác thực ORM. Tôi không thể xây dựng một bản phát hành ứng dụng khách bởi vì ORM yêu cầu quyền truy cập TCP/IP vào máy chủ. Điều này là không tốt vì nó buộc tôi phải trên trang web để làm một xây dựng. Nếu bạn biết cách khác để xây dựng các gói triển khai, bên ngoài mạng, vui lòng cho tôi biết. Nếu không, hãy sử dụng nHibernate. Tôi thực sự khuyên bạn nên nHibernate hơn bất cứ thứ gì khác mà tôi từng sử dụng. – D3vtr0n

+0

Dọn dẹp hồ sơ, Devtron, tôi nghĩ bài đánh giá này dựa trên phiên bản OpenAccess ORM rất cũ. Tất cả các phiên bản hiện tại đều hỗ trợ tất cả các phương thức truyền thông SQL Server (TCP/IP, tên có tên, trong bộ nhớ). Việc hỗ trợ trình điều khiển mà tàu ra khỏi hộp với OpenAccess vượt quá mà tàu với NHibernate, quá. Kiểm tra các phiên bản mới nhất để có chế độ xem cập nhật: http://www.telerik.com/products/orm.aspx – Todd

0

Im new to OpenAccess ORM và chúng tôi đang sử dụng hai sản phẩm. Báo cáo và OpenAccess. Tôi nghĩ có một số tính năng mà mọi người đã bỏ lỡ.

  1. OpenAccess sử dụng thiết kế đồ họa trong khi nHibernate vẫn sử dụng file xml viết tay
  2. OpenAccess không giới hạn SQL Server như EF4 và các khung tương tự

sử dụng nó là dễ dàng hơn và các diễn đàn là khá hữu ích.

0

Với ORM có nhiều khả năng, tất cả phụ thuộc vào những gì bạn muốn.

Là người lập bản đồ ORM thực, tôi mạnh mẽ recomment NHibernateFluent NH ánh xạ. Bạn cần rất nhiều nghiên cứu để đặt cùng một kiến ​​trúc đẹp, nhưng sau đó không có gì đứng theo cách của bạn. Với sự thỏa hiệp tối thiểu, bạn sẽ có được sự linh hoạt thực sự.

EF6x (core không phải là prod. ready IMHO) được gọi là ORM, nhưng nó tạo ra gần hơn với DAL. Có một số điều bạn không thể làm hiệu quả với EF6. Tuy nhiên, đây là công cụ yêu thích của tôi cho một mô hình đọc, trong khi tôi kết hợp nó với NHibernate (nơi NH tôi sử dụng cho một mô hình DDD/ghi).

Hiện tại để hiệu suất - nó luôn luôn chuyên nghiệp và chống. Nếu bạn thâm nhập sâu hơn vào kiến ​​trúc ORM (xem bài viết của tôi: avoid ORM bad habits) thì bạn sẽ tìm thấy những cách trực quan để làm cho nó nhanh hơn. Đây là bài viết khác của tôi về cách làm cho EF6x 5x nhanh hơn (ít nhất là cho các tình huống đã đọc): EF6.x 5x faster