Nếu mục tiêu chính của bạn là tạo các bảng trước trong cơ sở dữ liệu và sau đó tự động cập nhật dự án của bạn thì bạn nên sử dụng Cơ sở dữ liệu trước.
Điều đó nói rằng, bạn phải xem xét những hạn chế của Cơ sở dữ liệu trước tiên:theo kinh nghiệm cá nhân của tôi, tôi đã ngừng sử dụng cách tiếp cận đó chủ yếu vì hai lý do:
- Hỗ trợ dành cho Cơ sở dữ liệu Đầu tiên sẽ bị ngừng, theo như tôi biết. EF Core không bao gồm công cụ soạn thảo. Một số liên kết về điều này: bài đăng từ Julie Lerman , Lộ trình EF Core và thông báo sớm từ Microsoft .
- Trình chỉnh sửa mô hình có một số lỗi và lỗi khiến mã thỉnh thoảng bị hỏng. Những lỗi này rất có thể sẽ không được sửa (xem phần trước). Những việc như thay đổi loại trường hiện có, thay đổi khóa ngoại, v.v.
- Tôi đã gặp rất nhiều sự cố do việc hợp nhất kho lưu trữ mã nguồn của các tệp thực thể được tạo tự động. Đặc biệt (nhưng không chỉ) khi một số người đang làm việc với cùng một thực thể, vì vậy chúng tôi nhận được xung đột hợp nhất trong mã được tạo tự động. Ngoài ra, đôi khi mã được tạo tự động không được kiểm xuất chính xác, vì vậy nó không đồng bộ với edmx. Tôi không chắc điều này cũng xảy ra với những người khác, nhưng có vẻ như đôi khi Visual Studio, trình chỉnh sửa, công cụ tạo mã tự động nền và trình quản lý mã nguồn TFS không hoạt động tốt với nhau.
Vì vậy, nếu bạn thực sự không thể sống mà không tạo các bảng trong cơ sở dữ liệu trước tiên, hãy tiếp tục với Cơ sở dữ liệu đầu tiên, nhưng bạn phải xem xét những gì bạn đang mất nếu bạn không sử dụng Mã đầu tiên. Cách tiếp cận này được khuyến khích rộng rãi bởi một lý do.
Thông thường lý do chính cho những người sử dụng Cơ sở dữ liệu đầu tiên ngày nay là không thể di chuyển mã kế thừa sang cách tiếp cận Mã đầu tiên. Theo như tôi biết, nó được chấp nhận rộng rãi rằng Code First là con đường đúng đắn để đi ngược lại. Ở đây bạn có một bài đăng thú vị về điều này (ngay cả khi nó hơi cũ, được viết cho EF 4.1, khi Code First được giới thiệu, nó đề cập đến những ưu và nhược điểm chính của từng cách tiếp cận).
Một giải pháp cho bạn có thể là tiếp tục sử dụng Code First nhưng cũng sử dụng các công cụ có sẵn để tự động tạo các thực thể Code First của bạn bằng cách thực hiện thiết kế ngược từ các bảng cơ sở dữ liệu. Với điều này, bạn vẫn có thể tạo các bảng của mình trực tiếp trong cơ sở dữ liệu, nhưng hãy tiếp tục sử dụng Code First với di chuyển và mọi thứ. Ở đây bạn có một bài đăng của Julie Lerman về một số công cụ đó . Có thể có nhiều công cụ mới hơn, nhưng tôi chưa sử dụng chúng và tôi không biết về chúng.
Lưu ý:trải nghiệm cá nhân của tôi với Database First khá tệ và không kéo dài quá lâu. Có lẽ ai đó có kinh nghiệm tích cực hơn trong cách tiếp cận này có thể đưa ra những hiểu biết hữu ích hơn về nó. Tôi đã sử dụng Code First được một thời gian và thực sự thích cách tiếp cận này. Câu trả lời của tôi có thể hơi thiên vị.