2009-06-16 27 views
27

Chúng tôi đang sẵn sàng để bắt đầu tái phát triển một ứng dụng doanh nghiệp nội bộ cũ lớn. Chúng tôi đã quyết định sử dụng ASP.NET MVC, nhưng được xem xét là Object Relational Mapping (ORM) để lựa chọn. Tất nhiên có vô số nguồn mở ORM và nguồn mở có sẵn. Tuy nhiên, dường như giữ sự chú ý lớn nhất, trong khi Entity Framework là điểm nóng mới của Microsoft.ASP.NET MVC và ORM Selection

Trong khi chúng tôi đang nghiên cứu và đùa giỡn với cả hai, chúng tôi muốn đưa nó vào cộng đồng như ORM (NHibernate, Entity Framework, hoặc nếu không) họ thích và tại sao.

Câu hỏi Stackoverflow Hơi tương tự

Bổ sung .NET ORM Reading

+0

Không có vi phạm, nhưng nó dường như điều này đã được hỏi trước: http://stackoverflow.com/search?q= .net + orm. http://stackoverflow.com/questions/380620/what-object-mapper-solution-would-you-recommend-for-net-closed đã bị đóng là trùng lặp. –

+0

Chà, tôi không biết làm thế nào tôi không tìm thấy câu hỏi đó khi tôi đang tìm kiếm. Cả Google và tìm kiếm SO đều thất bại. Không có hành vi phạm tội khi đóng cửa vì tôi sẽ không hỏi câu hỏi khác. :) – ahsteele

+0

Vì tôi đồng ý rằng điều này có lẽ nên được đóng lại thì tốt hơn là xóa câu hỏi hoặc bỏ phiếu rằng nó bị đóng? – ahsteele

Trả lời

13

Bạn nên có một cái nhìn tại Sharp Architecture một ứng dụng ASP.NET MVC khuôn khổ trong đó sử dụng NHibernate.

Tôi đã sử dụng một vài O/RM trong vài năm qua và không có cách nào sẽ chọn bất kỳ thứ gì ngoài NHibernate.

  1. Đó là người trưởng thành nhất.
  2. Nó có rất nhiều tính năng.
  3. Nó có một cộng đồng tốt đằng sau nó.
  4. Nó có một số dự án phụ trợ tuyệt vời như Fluent NHibernate.

Tôi không biết thêm thông tin nào mọi người sẽ có thể cung cấp cho bạn hơn và cao hơn trong các câu hỏi mà bạn đã liên kết.

+2

Các điểm liên kết đến một Miền Không tồn tại – Storm

+0

@Storm Cảm ơn, trông giống như liên kết thối. Tôi đã cập nhật url để trỏ đến kho lưu trữ github. –

2

Câu trả lời nói chuyện điên rồ: không.

Điều này không có nghĩa là ORM không phải là những công nghệ tuyệt vời khi được sử dụng đúng cách. Nhưng trong năm 2011, họ nhanh chóng trở thành cái búa phổ quát, nơi không phải mọi vấn đề đều là móng tay. Và có rất nhiều điều đang xảy ra trong các ORM hiện đại, đặc biệt là đối với những người không thông thạo họ, họ có thể làm lẫn lộn mọi thứ hơn là giúp đỡ mọi thứ. Hoặc, đôi khi mọi thứ đủ đơn giản để SQL thẳng là một lựa chọn tốt hơn. Cho dù ORM có tốt đến mức nào, trừu tượng sẽ bị rò rỉ tại một số điểm.

Mặt khác của mọi thứ cần xem xét là toàn bộ phong trào NoSQL. Công nghệ này vẫn còn một chút mới, nhưng đối với công việc mới, nó là một chiến lược truy cập dữ liệu mà người ta phải xem xét vì phải mất rất nhiều cruft ra khỏi xây dựng ứng dụng của bạn.

+3

OP nói rõ ràng rằng họ đã thiết kế lại các ứng dụng doanh nghiệp của họ, không bắt đầu học điều gì đó. Và khi bạn muốn kiên trì, phần lớn thời gian ORM là giải pháp đơn giản nhất. –

0

Câu trả lời ngắn: sử dụng cả hai (tôi thực sự sử dụng cả hai) ...

Với ORM có nhiều khả năng, tất cả phụ thuộc 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. Dưới đây là một bài viết của tôi về cách làm cho EF6x 5x nhanh (ít nhất là cho các tình huống đã đọc): EF6.x 5x faster