EF so với NHibernate [đã đóng]


8

Trong 2 năm qua kể từ khi tôi bắt đầu viết các ứng dụng kinh doanh (trước khi tôi làm chương trình hệ thống cấp cao hoặc cấp thấp), đã học các bộ dữ liệu, linq đến sql, và bây giờ là khung thực thể. Điều hợp lý để xem xét tiếp theo dường như là NHibernate.

Lý do cuối cùng tôi kết thúc tại EF là: (1) nó có hỗ trợ thiết kế tốt nhất và (2) nó được Microsoft hỗ trợ nhiều nhất.

Lý do (những yếu tố giả định này) Tôi quan tâm đến NHibernate là: (1) nó có thể không bị áp đảo bởi một điều hoàn toàn khác nhanh chóng khi MS khuấy động các công nghệ truy cập dữ liệu (2) Có vẻ như nó chạy trước hoặc thứ hai công cụ chạy phía trước cho những gì nó làm và (3) Nó có vẻ ổn định và có thể truy nguyên theo thời gian khá lâu.

Có ai đã xuất bản một kịch bản của hai? Là một trong những tốt hơn so với khác cho các loại kiến ​​trúc nhất định? Hay đó chỉ là vấn đề về phong cách và sở thích?

Câu trả lời:


6

Tại thời điểm này, tôi nghĩ rằng những lợi thế chính (duy nhất?) NH có trên EF là một số chiến lược tìm nạp rất chi tiết . Thay vì lười tải HOẶC tải tất cả mọi thứ, NH cung cấp cho bạn một số tùy chọn trung gian rất hay.

Phải nói rằng, tôi chưa bao giờ cần mức độ kiểm soát đối với quyền truy cập dữ liệu của mình và vì vậy, sự đơn giản của EF đã khiến cho sự lựa chọn trở nên dễ dàng.

Chỉ cần lưu ý rằng tệp thiết kế của EF rất tuyệt khi làm việc cùng có thể trở thành cơn ác mộng trong kiểm soát nguồn; nó không hợp nhất, hoặc tất cả. Hãy chắc chắn rằng bạn kiểm tra nó với một khóa rõ ràng bất cứ lúc nào bạn cần thay đổi công cụ.


3
+1 cho điều thiết kế. Tôi không có kinh nghiệm tốt với bất cứ điều gì liên quan đến một nhà thiết kế.
Codism

đừng quên khả năng luôn hoạt động với DB khác với SQLServer. EF tạo ra sql không chuẩn trong một số trường hợp.
gbjbaanb

bạn có thể giải quyết vấn đề hợp nhất bằng cách đưa tệp thiết kế vào danh sách bỏ qua của bạn và tạo lại không, vì những thay đổi được phản ánh trong tệp edmx?
Aaron Anodide

1
@Gabriel, tôi nghĩ rằng tập tin edmx là nguyên nhân gây ra vấn đề. Mọi người cập nhật trình thiết kế, thay đổi edmx, sau đó đăng ký và nếu những người khác đã làm như vậy, tất cả sẽ vỡ tung.
Adam Rackis

5
Nếu bạn tải xuống bản tải xuống (chính thức, được Microsoft hỗ trợ, nhưng không bao gồm trong .NET 4.0) EF 4.1 , bạn có thể sử dụng Code First và kết hợp các ánh xạ của bạn rất giống với FluentNHibernate. Hoạt động rất tốt với kiểm soát nguồn.
Aaronaught

3

Chúng tôi đang thực hiện một dự án mà kiến ​​trúc sư đã chọn NHibernate trên EF. Tôi ước rằng sự lựa chọn đã đi theo một cách khác vì yêu cầu của nhà xuất bản-người đăng ký đã có mặt ngay từ đầu.

Nếu bạn có kế hoạch sử dụng khung đồng bộ hóa , hãy đi với EF, vì NHibernate không thể đối phó với các bản cập nhật (đến các cột chỉ định dữ liệu đến từ đâu, ai đã thay đổi và là bản sao mới nhất của tôi) ở phía sau hậu trường.

Nếu bạn cần sao chép dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác (và giữ các khóa chính giống nhau), session.Replicatechức năng này được ghi lại kém và dường như mất nhiều thời gian hơn so với bản sao thẳng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.