2010-07-25 37 views

Trả lời

7

Ưu

  1. lớp thực thể Lightweight hoặc POCO dựa.
  2. Kiểm soát nhiều hơn đối với các lớp thực thể vì bạn tự mã hóa chúng thay vì tùy thuộc vào EF để tạo chúng. Điều này có nghĩa là bạn không phải định nghĩa một phần các lớp để làm chú thích dữ liệu.
  3. Tùy chọn để không bao giờ phải chỉ định ánh xạ ở bất kỳ đâu. Công ước tiếp quản cấu hình.
  4. DbContext tuân theo mẫu kho lưu trữ.
  5. Tải trọng lười biếng, thực thể liên quan tải tất cả dịch vụ chăm sóc được thực hiện cho bạn. Ví dụ, một mô hình Post có thể khai báo mô hình Author trong POCO và EF Code trước tiên sẽ tự động ánh xạ mối quan hệ này. Một lần nữa sử dụng quy ước làm cho chúng ta rất hiệu quả.
  6. Hoạt động tốt cho các ứng dụng greenfield.
  7. Tạo MVC ASP.NET hoạt động tuyệt vời.
  8. ModelBinder hoạt động như bình thường.

Nhược điểm

  1. Không hỗ trợ API để tùy biến quy ước lập bản đồ cơ sở dữ liệu như thế nào trong thành thạo NHibernate.
  2. Khó khăn để ánh xạ tới cơ sở dữ liệu hiện có (Điều này có thể thay đổi trong phiên bản phát hành).

Để mã mẫu và ánh xạ tới cơ sở dữ liệu hiện có bằng cách sử dụng Mã EF 4.0 Đầu tiên xem bài đăng trên blog này. http://theminimalistdeveloper.com/2010/07/28/how-to-map-pocos-to-existing-databases-in-entity-framework-4-0-code-first-and-asp-net-mvc-2/

+0

Nhược điểm của bạn. không đúng! vì mẫu T4 có sẵn để tận dụng nhà thiết kế EF để hỗ trợ EF-Code Đầu tiên đơn giản! –

1

Nhược điểm:

  • Vì bạn không có EDMX, bạn không thể pregenerate xem
  • Chưa cấp phép cho go-live. Hy vọng rằng, điều này sẽ sớm thay đổi.

Ưu

  • Vì không có sơ đồ cố định, bạn có thể tự động xây dựng một khi chạy.

Hầu hết những thứ khác hoàn toàn giống nhau (tải chậm, tải rõ ràng, v.v.). Một vài điều nữa là vấn đề sở thích cá nhân (API).

+0

Điều gì về các tính năng như tải trọng, phím tắt, thủ tục lưu trữ, v.v ...? –

+0

@Craig "Vì bạn không có EDMX, bạn không thể tạo trước lượt xem" Tôi e rằng điều này không đúng. Bạn có thể tạo các khung nhìn dựa trên các lớp mô hình của bạn - cho dù bạn có các tệp edmx hay không. –

+0

@Bikal: Cú pháp EdmGen cho cú pháp này là gì? Một EF PM nói với tôi rằng nó không thể được thực hiện một năm trước đây. ... hoặc bạn đang nhầm lẫn giữa chế độ xem MVC với chế độ xem EF? –

0

Vì bạn đã hỏi cụ thể về Tải Lười, đây là ghi chú hiển thị Working with Lazy Loading with Entity Framework Code First, nơi được bật theo mặc định. Để trả lời cụ thể một phần câu hỏi của bạn, có với Code First bạn vẫn nhận được những lợi ích của Lazy Loading, và trên thực tế như bài viết cho thấy, bạn có quyền kiểm soát rất tốt đối với tính năng này.

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