2010-01-21 19 views
5

Đây có thể là một cảnh quay dài.Có kẻ giết người NHibernate nào không?

Trong thế giới .NET, có ai đã tìm thấy ORM (Thương mại hoặc Mở) có tính linh hoạt của NHibernate để hỗ trợ thiết kế định hướng miền có hỗ trợ LINQ tốt không? LINQ to sql đã chết, Entity Framework doesnt chưa hỗ trợ POCO, tải lười biếng hoặc đối tượng phát triển đầu tiên rất tốt, và không ai trong số các stands cũ như LLBLGen dường như một trong hai.

Bất kỳ ai tìm thấy điều gì mới mẻ và thú vị trong thị trường ORM?

Cảm ơn!

+7

Ai nói LINQ to SQL đã chết? Microsoft đã phát hành một bản vá để làm cho nó đột nhiên ngừng hoạt động? –

+2

Ngoài ra, NHibernate đang khiến bạn tìm kiếm giải pháp thay thế thì sao? Nếu đó là ánh xạ XML, hãy xem Fluent NHibernate. Nếu bạn không quan tâm đến một trong hai, có một cái nhìn tại Castle ActiveRecord, đó là NHibernate dựa trên nhưng làm cho việc lập bản đồ dễ dàng hơn và cũng tóm tắt đi một số quản lý phiên. –

+0

@Kyralessa: LinqToSql không phải là chết, nhưng Microsoft đang đặt cơ bắp của nó đằng sau Entity Framework (bạn đã đếm số phiên PDC 2009 trên EF so với LinqToSql?). Nhà cung cấp LINQ của NHibernate là một công việc đang được tiến hành và điều đó dường như quan trọng đối với fregas. –

Trả lời

4

Xem ORMBattle.NET - nó sẽ không trả lời chính xác câu hỏi của bạn (btw, tôi hầu như không thừa nhận điều này là có thể), nhưng có một số thông tin về chất lượng hỗ trợ LINQ.

Lưu ý (hoặc từ chối trách nhiệm): Tôi là một trong những người liên quan đến việc tạo ORMBattle.NET, cũng như một trong số DataObjects.Net tác giả.

+2

Cảm ơn bạn đã từ chối trách nhiệm, tôi thực sự đánh giá cao nó. Thông tin bổ sung liên quan đến câu hỏi gốc: LLBLGen yêu cầu không được liệt kê trên ORMBattle.NET. –

+1

Tôi rõ ràng không có ý định giấu sự thật này. Vì vậy, nó thực sự tốt hơn để chỉ đơn giản là lặp lại nó ở khắp mọi nơi mà điều này là không hoàn toàn rõ ràng. –

+1

Vui lòng cập nhật biểu đồ! Nó đã lỗi thời. – hazzik

1

Không, tôi không biết. Bởi vì NHibernate là phổ biến và rất giỏi về những gì nó làm, và EF có khả năng nhận phần lớn phần còn lại (đặc biệt là các dev không muốn đi lạc từ các khung công tác do Microsoft cung cấp), rào cản để nhập cho một người chơi mới là rất cao. Một ORM khác sẽ cần phải thêm một cái gì đó quan trọng hơn và trên những gì NHibernate hiện đang cung cấp để có được bất kỳ mức độ hợp lý quan tâm.

Nếu có một dự án mã nguồn mở muốn phân phối hỗ trợ LINQ tốt hơn trong ORM, theo ý kiến ​​của tôi, nó sẽ có thành công lớn hơn để đóng góp cho NHibernate Linq hơn là cố gắng xây dựng khuôn khổ riêng của mình từ đầu.

2

Bạn đang nói về phiên bản .NET Framework nào? 3.5? 4.0?

Có khá nhiều ORM và một số thương mại thực tế có thể đáp ứng nhu cầu của bạn (hoặc đang làm việc trên các bản phát hành mới đáp ứng nhu cầu của bạn). Cạnh tranh với cả NHibernate và Entity Framework từ góc độ thương mại là khá khó khăn. Microsoft đã làm cho nó khó khăn hơn nhiều so với việc cần thiết để viết một nhà cung cấp LINQ, đó là lý do tại sao rất ít ORM có một. Viết một tên miền hướng thiết kế theo định hướng ORM hỗ trợ nhiều nhà cung cấp cơ sở dữ liệu cũng là một ngọn đồi khá dốc để leo lên.

NHibernate chắc chắn có tất cả động lượng ngay bây giờ, nhưng điều đó không có nghĩa là nó bất khả chiến bại. Thật khó để cạnh tranh với phần mềm nguồn mở miễn phí & có khởi đầu nhiều năm, ngay cả đối với một công ty có nguồn tài chính của Microsoft.

Tôi nghĩ bạn có thể chỉ cần kiên nhẫn. Nhà cung cấp LINQ của NHibernate đang cải thiện và các nhà cung cấp ORM khác đang nỗ lực cải thiện các dịch vụ của họ. Mọi thứ có thể thay đổi đáng kể trong hai năm tới.

1

Tôi sẽ không gọi nó là "kẻ giết người NHibernate", nhưng SubSonic hoạt động tốt. Nó đơn giản để sử dụng, cho phép bạn lựa chọn giữa việc sử dụng mẫu Active Record và mẫu Repository. Nó hỗ trợ POCO, cho phép bạn sử dụng phát triển đối tượng đầu tiên và thiết lập tải lười là đủ dễ dàng.

0

CQRS có thể được coi là kẻ giết người NHibernate. Tiền đề cơ bản là các đối tượng miền của bạn không được sử dụng để hỗ trợ mô hình đọc và truy vấn ứng dụng của bạn. Như vậy, bạn có thể bắt đầu sử dụng một cái gì đó giống như một cửa hàng tài liệu để giữ tổng hợp của bạn hoặc thậm chí sử dụng nguồn sự kiện. Để cập nhật mô hình đã đọc của bạn, bạn có thể nghe các sự kiện được tổng hợp của bạn xuất bản để nó có thể tự cập nhật cho phù hợp. Sử dụng phong cách kiến ​​trúc này, chúng tôi đã có thể loại bỏ sự phụ thuộc của chúng tôi khi NHibernate.Bây giờ nếu chúng ta quyết định sử dụng một RDBMS, đó là vì những điểm mạnh của cơ sở dữ liệu chứ không phải là sự lựa chọn mặc định.

+0

Nó vẫn có vẻ như bạn sẽ cần NHibernate hoặc ORM khác cho các công cụ CRUD cơ bản. Đối với báo cáo nâng cao, tôi đồng ý nó không thực sự là công cụ tốt nhất ... nhưng bạn có thể tranh luận cho Entity Framework – fregas

+0

NHibernate trở nên quá mức tại thời điểm đó. Có một loạt các "ORM mini" đang xuất hiện - ngay cả một mã nguồn mở từ các chàng trai Stack Exchange. –

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