2011-07-02 53 views
8

Tôi đã xem một số video và hướng dẫn cho EF 4.1, và tôi không hiểu bất kỳ lợi ích nào của CodeFirst (ngoại trừ một số nếu DB là rất nhỏ 3-4 bảng và tôi lười để tạo DB trước).Ưu điểm của CodeFirst so với Cơ sở dữ liệu đầu tiên là gì?

Chủ yếu, cách tiếp cận tốt nhất là tạo cơ sở dữ liệu trong một số trình soạn thảo Cơ sở dữ liệu, sau đó chỉnh sửa nhanh hơn trong Mô hình thực thể và EF chọn mọi mối quan hệ và tạo liên kết chính xác. Tôi biết có những thách thức trong quy ước đặt tên vv, nhưng tôi cảm thấy rất khó hiểu khi quản lý Code First vì mọi thứ đều giống như mã và quá nhiều mã của nó.

CodeFirst có thể làm gì và trước tiên Db không thể làm gì?

Trả lời

17

CodeFirst không thể làm bất kỳ điều gì mà DB không thể thực hiện trước. Vào cuối ngày, cả hai đều sử dụng Entity Framework.

Các ưu điểm chính của việc sử dụng codefirst là:

  • Tốc độ phát triển - Bạn không cần phải lo lắng về việc tạo một DB bạn chỉ cần bắt đầu mã hóa. Tốt cho các nhà phát triển đến từ một nền tảng lập trình mà không có nhiều kinh nghiệm DBA. Nó cũng có các cập nhật cơ sở dữ liệu tự động, do đó bất cứ khi nào bạn thay đổi mô hình, DB cũng được tự động cập nhật.
  • POCOs - Mã này sạch hơn rất nhiều, bạn không kết thúc bằng nhiều mã được tạo tự động. Bạn có toàn quyền kiểm soát từng lớp học của bạn.
  • Simple - bạn không có một mô hình edmx để cập nhật hoặc duy trì

Để biết thêm thông thấy Code-first vs Model/Database-first và đây Code-First or Database-First, how to choose?

+2

Thành thực mà nói viết C# mã cho tài sản và siêu dữ liệu là quote chậm hơn và khó quản lý khi không có tài sản vượt qua 10 rất có khả năng xảy ra. Cho đến nay là mã được tạo ra tôi không quan tâm như thế nào bẩn nó trông. Tự động cập nhật cơ sở dữ liệu, điều này nghe có vẻ thú vị, tôi sẽ kiểm tra nó. –

+5

+1 cho 'CodeFirst không thể làm bất cứ điều gì DB đầu tiên không thể.' –

+0

Khả năng lập bản đồ kém hiệu lực CodeFirst, vì cơ sở dữ liệu của bạn sẽ luôn phản ánh các thực thể của bạn ... –

2

Migration được kích hoạt trong EntityFramework 4.3 cho CodeFirst, vì vậy bạn có thể dễ dàng cập nhật các thay đổi từ mô hình đến cơ sở dữ liệu liền mạch Reference 1

video chi tiết: Complete Reference Video

7

Xuất phát từ phương pháp tiếp cận DataCentric, tôi sẽ luôn tìm thấy những điều kỳ lạ mà mọi người muốn tạo trong Phương pháp tiếp cận mã đầu tiên. Khi tôi thiết kế cơ sở dữ liệu của tôi, tôi đã suy nghĩ về những gì từng bảng như thể chúng là các lớp. Cách chúng liên kết với nhau và cách dữ liệu sẽ chảy. Tôi có thể hình ảnh toàn bộ hệ thống thông qua cơ sở dữ liệu.

Tôi luôn được dạy rằng bạn làm việc ngay từ đầu, có được nền tảng của bạn đúng và mọi thứ khác sẽ tuân theo. Tôi tạo ra rất nhiều hệ thống khác nhau cho nhiều công ty khác nhau và tốc độ mà tôi thực hiện dựa trên thực tế là khi tôi có mô hình cơ sở dữ liệu mạnh, tôi chạy trình tạo mã tùy chỉnh của mình để tạo Thủ tục xem/lưu trữ dưới dạng cũng như Controller/BusinessLayer/DataLayer của tôi cho tôi, Đặt tất cả chúng lại với nhau và tất cả những gì tôi phải làm là tạo ra giao diện người dùng.

Nếu trước tiên tôi phải tạo toàn bộ hệ thống trong mã để tạo cơ sở dữ liệu, cũng như tất cả các mục khác thì tôi sẽ mất quá nhiều thời gian. Tôi không nói rằng tôi đúng trong bất kỳ điều khoản nào, và tôi chắc chắn rằng có nhiều cách để phát triển hệ thống nhanh hơn và có nhiều kinh nghiệm hơn, nhưng cho đến nay, tôi chưa tìm thấy.

Cảm ơn đã cho phép tôi nói và tôi hy vọng quan điểm của tôi đã giúp ích một chút.

+1

Tôi thấy mã đầu tiên hoàn toàn vô dụng, chúng tôi có sẵn cơ sở dữ liệu hoặc chúng tôi tạo cơ sở dữ liệu dễ dàng với các công cụ cơ sở dữ liệu và chúng tôi có mẫu văn bản đọc cơ sở dữ liệu và tạo mã mô hình đầu tiên. Các nhà thiết kế cơ sở dữ liệu dễ dàng hình dung và thay đổi. Và trên tất cả, bạn có toàn quyền kiểm soát. –

1

Vâng, điều đó tùy thuộc vào dự án của bạn. Tôi sẽ cố gắng tổng hợp một số ý tưởng:

  • Bạn có toàn quyền kiểm soát các lớp thực thể. Chúng không được tạo ra nữa, bạn không phải cập nhật mẫu T4 hoặc sử dụng các lớp học một phần…
  • Mô hình EDMX sẽ biến mất trong EF7 có lợi cho mô hình CodeFirst. Vì vậy, hãy nhớ nếu bạn định di chuyển sang EF hoặc bạn có dự án bắt đầu trong tương lai gần có thể sử dụng EF7.
  • Dễ dàng hợp nhất trong trường hợp nhiều nhà phát triển đang làm việc trên mô hình +/- Chú thích và ánh xạ phải được thực hiện thủ công. Tôi sẽ nói cách tiếp cận mã đầu tiên có vẻ nhẹ hơn (ít sưng lên) và chúng ta có thể giữ mọi thứ đơn giản (mô hình trực quan có thể che giấu sự phức tạp không mong muốn). Mở sang API thông thạo.
  • Bạn vẫn có thể trực quan hóa mô hình thông qua Power Tools, nhưng mô hình là chỉ đọc. Bất kỳ thay đổi nào đối với mô hình phải được thực hiện thủ công (ngay cả các thực thể ban đầu cũng có thể được tạo từ đầu). Bạn không có mô hình một phần (sơ đồ), nhưng các mô hình của chúng tôi phải đủ nhỏ.
  • Có vẻ như cơ sở dữ liệu đầu tiên được tích hợp tốt hơn với SPs và kết quả chức năng (một số cải tiến đã được thực hiện trong EF6)
Các vấn đề liên quan