Code First:
Viết các class Model bằng code C# và generate Database từ class Model.
Ưu điểm:
- Rất phổ biến (vì các lập trình viên thường không thích thiết kế DB, nhưng thích thiết kế class)
- Kiểm soát hoàn toàn code model, thêm xóa sửa thuộc tính vô cùng dễ dàng
- Không phải nặng đầu suy nghĩ về DB. Đối với cách tiếp cận này, DB chỉ là cái “cục” data, lôi ra xài thôi
- Có thể version control Database
Nhược điểm
- Các thay đổi cấu trúc trực tiếp trên DB sẽ mất
- Khó kiểm soát những column sẽ tạo trên Db
- Hơi khó khi kết hợp với Db có sẵn
Database First:
Generate Model từ Database có sẵn và các class model sẽ ko được phép chỉnh sửa vì database không đổi.
Ưu điểm:
- Ít phổ biến hơn
- DB có thể được develop riêng
- Dùng được DB có sẵn
- Entity Framework sẽ tạo ra các Entity class cho bạn
Nhược điểm
- Không thể thay đổi code đã được Generate
- Khó khăn khi muốn thêm các DataAttribute và DisplayAttribute cho các class model
- Khó khăn khi muốn biểu diễn các kiểu quan hệ cha con của class
- Mỗi lần thay đổi cấu trúc DB, bạn sẽ phải update lại mapping và model để phản ánh sự thay đổi đó