2009-04-08 38 views
5

Tôi đang làm việc trong một cửa hàng Microsoft .NET, nơi bạn có thể sử dụng NHibernate hoặc ADO.NET EF. Chúng tôi nên sử dụng hướng dẫn nào khi bạn nên chọn hướng dẫn này? Ví dụ, nó có vẻ giống như khi viết một ứng dụng Silverlight, dịch vụ dữ liệu EF -to-> ADO.NET Data-to-> Silverlight sẽ cung cấp một tăng năng suất, và cung cấp cho bạn một API dịch vụ REST mà không cần thêm nỗ lực nào.ADO.NET Entity Framework và NHibernate - khi sử dụng một cái khác trên

Điều gì khác sẽ giúp hướng dẫn bạn trên ứng dụng theo cơ sở ứng dụng?

CẬP NHẬT (dựa trên bình luận): Cái này là hơi hữu ích What differentiates Nhibernate from other ORM’s? những người khác đi ra khỏi thành tiếp tuyến kỳ lạ (như cận âm) và không so sánh trực tiếp hai. Tôi đoán tôi đang tìm kiếm những người sử dụng cả hai và quyết định dự án theo dự án mà họ sẽ sử dụng.

+0

Đây là bản sao nhiều lần. Chỉ cần nhìn vào các câu hỏi liên quan ở phía bên tay phải của trang này. –

Trả lời

6

Tóm lại, EF không có hỗ trợ Vô minh Persistence trong hộp. Khi tôi lần đầu tiên thử xây dựng một giải pháp với EF năm ngoái, tôi hơi bực mình khi bạn không thể có POCO trong ứng dụng của mình. Tôi muốn một mức độ cao hơn của decoupling với mô hình của tôi vì vậy tôi đã kết thúc chuyển sang NHibernate. Kể từ đó, ai đó đã viết một bộ chuyển đổi EF POCO. http://code.msdn.microsoft.com/EFPocoAdapter - tuy nhiên nó thực sự chỉ là một codegenerator tạo ra một lớp adapter để ánh xạ các đối tượng của bạn.

Vì một số lý do, ứng dụng của tôi chạy nhanh hơn một chút dưới NHibernate. Lấy nó bằng một hạt muối vì tôi mới cấu hình một trong hai giải pháp.

+0

Sự thiếu hiểu biết về PErsistence dường như được lên kế hoạch cho EF v2.0 nên được gửi kèm với .NET 4.0/VS 2010, đôi khi vào đầu năm 2010 –

+0

Cảm ơn thông tin. Tốt để nghe sự thiếu hiểu biết kiên trì đang đến trong v2. Sẽ có một cái nhìn vào bộ chuyển đổi, đã không nhìn thấy điều đó trước đây. Nhưng trong 18 tháng tới tôi nghĩ mình sẽ gắn bó chủ yếu với NH. Tôi đã học được cách viết các tập tin cấu hình darn này;) – BuddyJoe

+0

... và bây giờ bạn sẽ phải bỏ lại lập bản đồ một lần nữa, vì tất cả mọi người "cool" hiện đều thành thạo :) http://fluentnhibernate.org/ – HenningK

2

Tôi có lẽ sẽ tránh hoàn toàn khuôn khổ thực thể. Có vote of no confidence rằng các công việc gia đình đã được đưa ra, chưa kể nó không trưởng thành như NHibernate.

Có nói rằng, tôi sẽ tiếp tục đánh giá khung pháp nhân vì tôi chắc chắn rằng nó sẽ được cải thiện theo thời gian.

+0

+1 đã thấy "phiếu bầu không có sự nhầm lẫn" và các bài đăng trên blog về chức năng bị thiếu hoặc thiếu. Nhưng quyền của bạn về nó cải thiện. Microsoft thường lấy nội dung ngay lần thử thứ ba. – BuddyJoe

4

Microsoft gần đây đã bắt đầu phát triển một giải pháp mới, được gọi là .NET Ria Services (hiện tại), sẽ là "ORM độc lập" để nhận dữ liệu vào và ra khỏi Silverlight từ lớp logic nghiệp vụ trên máy chủ.

Họ đã đề cập công khai (trên các trang trình bày tại MIX, thậm chí) rằng NH SILL được hỗ trợ tại đây.

Nếu bạn đang tìm kiếm giải pháp có hỗ trợ cộng đồng nhất, NHibernate chắc chắn là câu trả lời. Tôi sẽ thừa nhận rằng nó có một đường cong học tập dốc, nhưng theo kinh nghiệm của tôi nó chắc chắn là giá trị nó. Chỉ cần thực hiện tìm kiếm so sánh cho "khung thực thể" và "nhibernate" và bạn sẽ thấy ý của tôi. Hầu hết các công cụ EF sẽ được "báo chí", trong khi các công cụ NHibernate thực sự sẽ được xuống-to-the-ruột kỹ thuật, chi tiết đẫm máu. Và câu hỏi. Được trả lời.

Nhưng như các áp phích khác đã đề cập - Tôi chắc chắn Khung thực thể sẽ cải thiện theo thời gian. Mặc dù bây giờ, tôi tin rằng họ đang cố giải quyết quá nhiều vấn đề với một bộ công cụ. NHibernate chỉ là một điều, nhưng nó đặc biệt tốt.

Ngoài ra còn có vấn đề về thiết kế ứng dụng tại đây. EF có vẻ là (trong hiện thân của nó) được xây dựng để cung cấp một cơ sở dữ liệu cho một ứng dụng C#. NHibernate đi theo cách khác, và làm cho nó dễ dàng hơn để có được một mô hình đối tượng tồn tại.

+0

+1 ý kiến ​​hay. Bạn không phải bán tôi trên NHibernate. Tôi đã được đào sâu vào nó trong khoảng 3 tháng nay. Tôi thấy nó có thể tùy biến và mô đun hơn EF. Cách làm NH nói chuyện với tôi. LINQ với EF vẫn cảm thấy một chút nước ngoài. – BuddyJoe

+1

Sẽ đọc trên Dịch vụ RIA. – BuddyJoe

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