Cái này m nghĩ không chỉ đúng với .NET mà có thể áp dụng cho software development.
Tuỳ thuộc vào trình độ từng lập trình viên và cấu trúc của dự án mà có thể có cách tiếp cận khác nhau. Ví dụ:
- Entry level: có thể bắt đầu từ DB. Xây dựng code dựa trên liên kết DB có sẵn
- Mid level: Xây dựng cấu trúc dựa trên Model, sau đó reflect lên DB khi có thay đổi có thể sử dụng migration
- Senior, SA: với những dự án phức tạp, nhiều logic thì rất khó bắt đầu bởi code hay DB, thường sẽ định hình business rules rồi sẽ phân tích architecture và đầu code.
Việc code và DB là quá trình diễn ra liên tục, khi có sự thay đổi về business thì phải cập nhất code&DB, lúc đó bắt đầu bởi gì thì còn tuỳ thuộc vào từng case.
Lý do mà Entry/Mid levels có thể bắt đầu bởi code/DB cho những dự án nhỏ bởi vì thường các bạn sẽ áp dụng những pattern đơn giản hơn: MVC, MVVM, MVP… trong đó Model (code) và DB phải tới 90% là tương đồng do đó bắt đầu bởi code hay DB không có quá nhiều khác biệt.
Lớn hơn, với những dự án “enterprise” thì MV(X) (nói chung) hiếm được sử dụng, có thể sử dụng các architecture phù hợp hơn, ví dụ: Onion, Hexagonal, etc. lúc đó domain (model) mới là phần cần thiết kế đầu tiên, code sẽ được thực hiện sau và DB chỉ là 1 adapter thôi.