Entity Framework đã sẵn sàng để sản xuất chưa? [đóng cửa]


10

Tôi đang xem xét Entity Framework cho một dự án mới mà tôi sẽ thực hiện và là một phần trong nghiên cứu của tôi về nó Tôi đang hỏi một số chuyên gia trong ngành nếu nó ổn định và sẵn sàng để thực hiện 'thế giới thực'.

Trong khi chạy là:

  • EF
  • NHibernate
  • DevExpress XPO

Tôi đã có nhiều kinh nghiệm với XPO, nhưng tôi không hài lòng lắm với nó.

Câu trả lời:


8

Có, nhưng với một số cảnh báo:

  • Nó được Microsoft hỗ trợ đầy đủ và có một cộng đồng đang phát triển - nhưng mới hơn so với đối thủ cạnh tranh gần nhất của nó, nHibernate, nó vẫn chưa có một cộng đồng hoàn toàn trưởng thành.

  • Cùng với việc có một cộng đồng kém trưởng thành, sẽ có những lúc một tính năng có sẵn với EF4 nhưng hầu như không được ghi lại; hoặc EF4 sẽ đưa ra các ngoại lệ mà Google không thể giúp bạn.

  • Nó có đầy đủ tính năng khi được sử dụng như Microsoft dự định, nhưng theo kinh nghiệm của tôi, có thể khá khó khăn để trang bị thêm vào một hệ thống hiện có. Lý tưởng nhất là bạn sẽ sử dụng nó trong kịch bản trường xanh với ngăn xếp 100% của Microsoft. Nó chắc chắn đủ linh hoạt để xen kẽ với các hệ thống khác, nhưng làm như vậy sẽ tăng độ khó đáng kể.

Tuy nhiên, để nhắc lại điểm chính, nó hoàn chỉnh và đủ ổn định để sử dụng sản xuất.


Một điều quan trọng cần chỉ ra, điều này có vẻ hiển nhiên nhưng thường bị bỏ qua cho đến khi nó gây ra đau đớn, đó là một ORM hoạt động để ánh xạ từ mô hình quan hệ sang mô hình OO. Nếu một trong hai tầng này không tuân theo các quy tắc của mô hình tương ứng thì bạn sẽ cảm thấy tổn thương thêm.

Điều này có thể đi cả hai chiều - nếu bạn thành thạo mô hình quan hệ / dựa trên tập hợp của SQL và OOP thì ORM sẽ cho phép hai giao thoa như bơ. Nếu cơ sở dữ liệu của bạn trông giống như nó muốn là OO và mã OO của bạn trông giống như nó muốn dựa trên bản ghi, thì YMMV.


+1: Cảm ơn thông tin. May mắn thay, dự án là một trường xanh gần như hoàn toàn trong ngăn xếp .NET (vẫn đang tranh luận giữa máy chủ mysql và sql), và tôi sẽ lập mô hình miền trước (và hy vọng sẽ tạo cấu trúc bảng)
Steven Evers

@SnOrfus: FWIW Tôi đã bắt đầu sử dụng EF trên MySQL gần đây và thực sự thích nó.
Eric King

5

Chúng tôi đã sử dụng EF trong một số ứng dụng sản xuất. Chúng tôi cũng có NHibernate trong một số ứng dụng sản xuất. Nhận xét của STW rằng EF hoạt động tốt nhất "khi được sử dụng như Microsoft dự định" là hoàn toàn đúng. Điều này cũng đúng với NHibernate rằng nó hoạt động tốt nhất khi được sử dụng theo các mẫu mà nhóm NHibernate dự định. Tôi không có kiến ​​thức hoặc kinh nghiệm với XPO.

Tôi không hối tiếc khi đưa NHibernate vào sản xuất.
Tôi không hối tiếc khi đưa Entity Framework vào sản xuất.

Một trong những yếu tố thúc đẩy sử dụng EF là sự tích hợp với LINQ. Tôi biết rằng NHibernate cũng đã thực hiện rất nhiều công việc với LINQ nhưng vẫn chưa có thời gian để điều tra điều đó.


Làm việc với cả hai là một cách tuyệt vời để học cách làm việc với cả hai. Nó giống như học cả VB.NET và C # - bạn đặt câu hỏi khi bạn thấy sự khác biệt và hỏi những câu hỏi đó giúp tăng cường sự hiểu biết của bạn cuối cùng.
STW

3

Chúng tôi đang sử dụng EF4.1 với cách tiếp cận Code First cho dự án web của chúng tôi và như đã nêu trước đây về việc sử dụng như Microsoft đã dự định, nó sẽ giúp bạn tránh được nhiều vấn đề.

Tuy nhiên, người ta có thể nhận thấy rằng hệ thống chưa thực sự trưởng thành và tôi nói điều này bởi vì:

  1. Hành vi vẫn thay đổi rất nhiều (so với CTP5 đến 4.1)
  2. Trình tạo LINQ to Entities chỉ có thể xử lý các loại cơ bản (Int, String, lot)
  3. Một số thứ không hoạt động hoàn toàn bằng trực giác khi bạn cố gắng hợp nhất trong các bộ dữ liệu hiện có
    1. Nó không cho phép bạn chỉ tạo định nghĩa bảng cho một số dbsets nhất định
    2. Các trường ánh xạ như datetimes yêu cầu Google.
  4. Xem các vấn đề đã biết khác

2

Tôi chưa thực sự sử dụng toàn bộ stack, nhưng chúng tôi sử dụng nó từng phần trong sản phẩm của chúng tôi và nó có vẻ khá trưởng thành, mặc dù chúng tôi phải điều chỉnh một số phần cho nhu cầu của mình.


0

Tôi sẽ nghĩ như vậy. Tôi đang sử dụng mã đầu tiên (CTP) của EF4 để phát triển ứng dụng web cho nhiều người thuê.


+1 - Có, tôi đã thực hiện một số huấn luyện trong một nhóm sử dụng nó mạnh mẽ trong một dự án doanh nghiệp rất lớn và nó hoạt động khá tốt. Đó là với phiên bản đầu tiên, không phải là phiên bản mới nhất. Vì vậy, tôi chắc chắn rằng nó an toàn 100% khi sử dụng phiên bản mới nhất.

Tôi không biết làm thế nào bạn có thể chắc chắn 100% về bất kỳ phần mềm nào bạn chưa thực sự chạy trong môi trường sản xuất.
Jeremy

-1

Tôi nghĩ / hy vọng vậy ... Tôi đang bắt đầu một dự án với EF 4 và cách tiếp cận Model-First mới ...

Đối với những gì tôi đã thấy, EF 4 rất mạnh mẽ và hoàn thiện tính năng mà phiên bản đầu tiên ... Tôi sẽ nói là hãy dùng nó, tôi biết tôi sẽ đi :)


-1

Đúng vậy, tuy nhiên, bạn nên phân bổ tài nguyên để cập nhật và kiểm tra lại ứng dụng của mình khi có bản cập nhật (như với bất kỳ khuôn khổ nào khác).

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.