2010-02-04 28 views
13

Tôi chỉ đọc article về Entity Framework 4 (thực sự là phiên bản 2).MS Entity Framework VS NHibernate và các đóng góp có nguồn gốc của nó (FluentNHibernate, LINQ cho NHibernate)

Entity Framework dường như cung cấp một cải tiến lớn so với bản phát hành đầu tiên. Vì vậy, tôi chưa bao giờ sử dụng EF trong bất kỳ dự án nào, vì tôi nghĩ EF không đủ trưởng thành so với NHibernate.

và đóng góp hiện nay của FluentNHibernateLinq for NHibernate by Ayende Rahien

Cảm giác của tôi là Microsoft đang chỉ cố gắng để đạt được địa hình nó đã mất ủng hộ của NHibernate khi phiên bản thứ 2 của NHibernate ra. Tuy nhiên, mối quan tâm của tôi là những điều sau (không theo thứ tự cụ thể):

  • EF4 có xu hướng ít chi tiết hơn không?
  • EF4 có tương thích với các kho dữ liệu bên dưới không chỉ là SQL Server?
  • Lợi ích lớn nhất khi dùng EF4 thay vì FluentNHibernate hoặc NHibernate?

NHibernate là một công cụ tuyệt vời, tôi đoán mọi người đều đồng ý. Do người tiền nhiệm Hibernate của nó, chúng ta có thể dễ dàng tìm thấy tài liệu và hướng dẫn và các ứng dụng mẫu để làm quen với nó. Đây không phải là trường hợp của FluentNHibernate. Đặc biệt là theo dự án tôi đang làm việc ngay bây giờ mà yêu cầu tôi điều tra thêm về NHibernate và các tùy chọn của nó (FluentNHibernate ví dụ) để tài liệu các quy tắc sử dụng và thực hành tốt nhất của NHibernate và công nghệ FluentNHibernate. Vì vậy, bị còng tay với VB.NET, là một nhà phát triển C-Style, tôi không thể tìm thấy một số tương đương cú pháp trong VB.NET cho các ví dụ được cung cấp, mặc dù tôi đã thực hiện theo cách của tôi cho đến nay.

Tôi tin rằng NHibernate là một lựa chọn tốt nhất, nhưng là một nhà tư vấn phần mềm, tôi không thể (không muốn) bỏ lỡ những thay đổi, cải tiến và tiến hóa công nghệ quan trọng.

Mặc dù nhận xét không tốt về EF1, EF4 dường như rất hứa hẹn. Tất cả những gì bạn nghĩ về cả hai NHibernate và Entity Framework con đường? Đối với tôi, tôi trở nên bối rối với tất cả những bài đọc đó. Tôi cần anh mang đầu ra khỏi mặt nước.

Nhờ tất cả các bạn!

+0

Dựa trên các câu trả lời của các câu trả lời, tôi đã chấp nhận những người đã nhận được nhiều phiếu bầu nhất. Bên cạnh đó, tất cả các bạn đều có những nhận xét và câu trả lời hay và đã khai sáng cho tôi một quyết định tốt về các nghiên cứu trong tương lai của tôi về cả hai công nghệ. Tôi muốn cảm ơn tất cả các bạn, và tôi xin lỗi vì không thể chấp nhận tất cả các câu trả lời của bạn là "giải pháp" của câu hỏi của tôi. Cảm ơn! –

Trả lời

3

Làm điều này với một hạt muối. Tôi không phải bất kỳ loại quyền nào trên các công cụ ORM, nhưng ở đây nó đi ...

Một trong những lợi ích lớn nhất mà tôi thấy trong EF là GUI để lập bản đồ. IMO, điều này tiết kiệm rất nhiều thời gian, nhưng có lẽ là lý do tại sao ánh xạ XML của EF quá chi tiết. Chúng không được thực hiện để được xử lý bằng tay, thật không may. Cho dù nó sẽ thay đổi hay không tôi không biết. Những gì tôi biết là GUI mà EF cung cấp được sử dụng rất dễ hỏng trong các phiên bản trước. Và tôi vẫn nghe về những người phàn nàn rằng nó không mở rộng quy mô, đặc biệt là trên các lược đồ lớn hơn và phức tạp hơn, nơi nó chỉ bỏ lỡ mọi thứ và bạn kết thúc với các ánh xạ trực tiếp. Ý kiến ​​của tôi là các bản đồ XML sẽ trở nên kém tiết hơn khi EF trưởng thành. Bạn cũng có hỗ trợ lập bản đồ thông thạo trong EF, điều này cũng hữu ích. Cuối cùng, một điều quan trọng nữa là khả năng thay đổi các mẫu mã mà EF tạo ra, đó là nếu bạn thích thiết kế dựa vào cơ sở dữ liệu thay vì cách tiếp cận thiết kế đầu tiên.

Một lợi ích khác là nó đến từ Microsoft và họ có đủ bột để làm cho một khung công tác thực sự dope này. Nó đã phát triển rất nhiều trong vài năm qua. Tôi nghĩ rằng nó sẽ được trên cùng một mặt bằng NHibernate trong một ít hơn một năm.Hiện tại, tôi nghĩ NHibernate là một lựa chọn tốt hơn. Nó ổn định hơn và trưởng thành hơn. Tương đối dễ cấu hình và quan trọng nhất là một người biểu diễn tốt hơn. Tôi nghĩ nếu bạn thiết kế một cách khôn ngoan, việc di chuyển từ người này sang người khác sẽ là một miếng bánh.

EF chỉ là trừu tượng. Tôi tin rằng có các nhà cung cấp cho Oracle, vì vậy tôi không thấy lý do tại sao không thể được thêm vào khi nó phát triển.

+0

Cảm ơn! Tôi thậm chí không biết rằng có một GUI để thiết kế mọi thứ. Tôi nghĩ rằng bạn đã đi cho phương pháp tiếp cận từ mặt đất, giống như NHibernate. Điều này có thể giải thích một cách chính xác độ dài của các tệp ánh xạ XML.Tôi không biết rằng nó cho phép cơ sở dữ liệu điều khiển, mà vẫn còn ngày hôm nay một cách tiếp cận phổ biến. Bạn có biết liệu nó cho phép kỹ thuật đảo ngược cho các hệ thống hiện có được viết lại cho .NET hay không, nhưng chúng ta muốn giữ nguyên cơ sở dữ liệu hiện tại ở đâu? –

+3

NHibernate có GUI/Visual Designers. –

+2

EF4 cho phép tiếp cận thiết kế đầu tiên. Nó cho phép bạn cắm mô hình miền của riêng bạn và ánh xạ nó vào cấu trúc dữ liệu của bạn bằng cách sử dụng các bản đồ XML hoặc một phương pháp dựa trên mã thông thạo tương tự như Fluent Nhibernate. Một tùy chọn khác là sử dụng cấu trúc hiện có và tạo mô hình miền dựa trên nó. Cách tiếp cận dựa trên cơ sở dữ liệu là gì. EF4 cho phép bạn điều chỉnh các mẫu mà nó sử dụng để tạo tên miền, có thể loại bỏ thành công một số đốm màu mà EF phun ra. –

4

EF4 có xu hướng ít chi tiết hơn XML không?

Nói chung, tôi chưa thấy bất kỳ dấu hiệu nào cho thấy XML sẽ khác biệt đáng kể. Microsoft đang cung cấp một giao diện Fluent giống như EF trong v4, nhưng nó là một phần bổ sung trên/riêng biệt.

EF4 có tương thích với kho dữ liệu cơ bản khác ngoài SQL Server không?

Hiện tại, tính năng này tương thích và sẽ vẫn tương thích trong tương lai. LinqToSql chỉ là SQL Server, nhưng EF chưa bao giờ là SQL Server.

Lợi ích lớn nhất khi dùng EF4 thay vì FluentNHibernate hoặc NHibernate?

Thành thật mà nói, không có nhiều. Có rất ít thứ ở đây và ở đó khác nhau, nhưng nói chung NHibernate vẫn còn nhiều năm trước EntityFramework, ngay cả trong EFv4.

Là một nhà tư vấn, có lẽ bạn nên dành thời gian để trở thành chuyên gia trong cả NHibernate và Entity Framework. Bạn có thể sẽ tiếp tục nhìn thấy cả hai trong thế giới thực. Microsoft có xu hướng có một sự chú ý ngắn khi nói đến truy cập dữ liệu vì vậy nó không rõ ràng nơi Entity Framework sẽ là một vài năm kể từ bây giờ. Vì nó là của Microsoft, bạn có thể chắc chắn rằng rất nhiều nhà phát triển sẽ sử dụng EF.

+0

Tôi có tiêu đề EF chỉ là SQL Server. Có lẽ là tin đồn! =) Tôi đã làm việc một chút rất nhỏ với việc thực hiện LinqToSql của một ORM, và tôi không thích. Mặc dù nó là một cách tiếp cận tốt sau khi tất cả, bạn đã đề cập đến nó, nó chỉ là SQL Server. Tôi thực sự không thể sử dụng nó vì điều đó. Vì phần lớn là một loại nhà phát triển, tôi cần phải thông thạo mã của mình để phản ứng nhanh chóng. Dù sao, tôi đoán bạn nói đúng khi nói rằng cả EF và NH sẽ cùng tồn tại trong một tương lai gần. Cảm ơn rất nhiều vì quan điểm của bạn! Bạn thực sự giúp soi sáng suy nghĩ của tôi về chủ đề này. –

5

Tôi biết hầu như không có gì về EF, nhưng lướt qua các liên kết được cung cấp dẫn tôi tin rằng EF không tương đương với chức năng Tự động hóa của Fluent NHibernate.

Edit: Một số bình luận đã chỉ cho tôi đến các liên kết chỉ có một số automapping trong EF, nhưng nó không thực sự rõ ràng nếu nó mạnh mẽ như FNH (ví dụ, có thể AutoMap bộ sưu tập của các đối tượng khác) .

Cá nhân, tôi thích có khả năng thiết kế POCO theo cách OO và cho phép công cụ xử lý tất cả công việc bận rộn của ánh xạ tới cơ sở dữ liệu quan hệ.

FNH vẫn có khả năng tự động hóa mạnh mẽ nhất, theo như tôi biết.

Đi tới Fluent NHibernate Automapping để biết thêm thông tin.

+0

Cảm ơn câu trả lời của bạn! Như vậy, tôi khám phá ra sức mạnh được cung cấp bởi Fluent NHibernate, vì vậy tôi chưa khám phá tính năng Tự động hóa. Tôi đọc một vài dòng về nó, nhưng tôi cần phải làm cho FNH làm việc lúc đầu để tôi có thể hiểu những gì Automapping làm cho người dùng. Đó là một điểm hay! Bạn khiến tôi nghĩ đến việc khám phá FNH ở mức độ sâu hơn. Có lẽ nó là giá trị để trở thành một loại chuyên gia với công nghệ như vậy. Cảm ơn! –

+2

Trên thực tế, EF cung cấp một tiện ích trình xây dựng cấu hình rất giống với Fluent NHibernate. Đây là một bài viết nói về nó: http://blogs.msdn.com/adonet/pages/feature-ctp-walkthrough-code-only-for-the-entity-framework.aspx –

+0

@ user68137: Cảm ơn! cho liên kết này. Tôi sẽ không bỏ lỡ cơ hội để truy cập vào liên kết này. –

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