Sunday 2 December 2018

Code-first là gì? Có nên học Code-first?

1.Code-first

Theo mình hiểu thì code-first là viết các class Model bằng cpde C#, Generate Database từ class Model.

2.Code-first là gì?

Code first là phương pháp tạo các class Model sau đó phát sinh ra database. Đây là cách thức phát triển ứng dụng nhanh khi chưa có database. Bằng cách sử dụng code first bạn cũng có thể tạo dữ liệu ban đầu cho database của mình. Sau đây mình sẽ hướng dẫn cách sử dụng EF code first, sẽ rất đơn giản thôi.

3.Áp dụng Code-first?

- Các bạn làm theo mình nhé ^^, đầu tiên chúng ta tạo 1 project:

b1: Các bạn chọn File->new->project sau đó hiện ra bảng như này rồi các bạn điền tên project vào nhé


b2: Khi bạn nhấn Ok thì sẽ hiện ra bảng như sau: Các bạn làm theo hình nhé ^^


rồi các bạn nhấn tiếp Ok, rồi bây giờ chúng ta đã tạo xong project rồi.

- Chúng ta là làm code first nên sẽ thao tác từ model đến database:

Nên chúng ta phải cài Entity-framework, các bạn thao tác giống mình nhé: Ở solution explorer, bạn click chuột phải vài References->Manager Nuget Packages-> rồi nó hiện ra 1 cái bảng để cho bạn có thể thêm thư viện mà Microsoft hỗ trợ, các bạn nhìn hình minh họa nhé:


các bạn chọn Install rồi đợi trong vài giây, bài của mình do cài rồi nên nó có chữ Uninstall.

Tiếp theo Các bạn vào Web.config vào thêm đoạn code này cho mình nhóe!! Cái đoạn code mình bôi đậm nhé!! 


đây mình sẽ giải thích từng dòng code cho các bạn:

+ Trong thẻ <add /> thuột tính name là trỏ đến một cái class để giao tiếp giữa code và database, trong class đó sử dụng DbContext để giao tiếp giữa code và database.
+ Tiếp theo là thuộc tính connectionString giá trị Data Source=DESKTOP-L2AT6ON là tên máy chủ của bạn trong SQL Server manager studio còn giá trị Catalog=AppProducts là tên database mà bạn muốn đặt, còn mình thì đặt là AppProducts

Tiếp theo đây các bạn Click chuột phải vào thư mục model rồi chọn Add->class.cs  để tạo ra một class. Rồi các bạn thêm các trường như sau: các trường này cũng giống như các cột trong Database ở Sql Server Manager Studio của bạn.


Bài của mình thì mình có 6 trường, còn [Key] ở trên Id Annotation, mà Annotation thì mình có hướng dẫn rồi các bạn có thể xem tại đây. 
Như vây là xong phần code-first rồi đấy, bây giờ các bạn có thể bật Sql Server Manager StudioRefresh lại sẽ thấy database của bạn có các trường tương tự như class ở trong thư mục model .

Các bạn có thể tham khảo phần CRUD mình làm bằng code-first ở đây nhé: GIT.

4.Tổng hợp Code-first

Như vậy là chúng ta đã xong phần code-first. À chắc hẳn khi bạn code phần model như bây giờ bạn lại muốn thêm một trường nào đó thì bạn sẽ phải update lại database.
Hướng dẫn khi thêm trường trong class model: 
b1: Các bạn làm như hình để nó hiển thị ra một cửa sổ console để thao tác nhé


b2: Sau đó bạn gõ các lệnh sau: 
+ enable-migrations
+ create-migration tên migration(Bạn muốn đặt như nào cũng được nhé)
+ update-database
Rồi các bạn vào database kiểm tra, nó sẽ tự động thêm vào database của các bạn

5.Phân tích Code-first

-Ưunhược điểm của code-first:
+Ưu điểmRấ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.

6.Đánh giá Code-first

Theo mình code-first sẽ giúp chúng ta nắm và hiểu được cơ bản về quá trình generate dữ liệu, sẽ giúp cho người mới học có thể dễ dàng tiếp cận. Đặc biệt nó giúp cho ta chủ động hơn trong việc thêm sửa hay xóa model


1 comment: