I. Khái niệm Code First trong ASP .NET MVC
Trong asp. net mvc ta có 2 cách tiếp cận chính đó là database first và code first, với 1 bài toán nhu yếu nhiệm vụ biến hóa liên tục và tăng trưởng nhanh gọn thì code first sẽ là quy mô tiếp cập tương thích hơn cả, sau đây mình sẽ trình diễn những đặc thù chính tương quan đến phương pháp tiếp cận code firstkhóa chính. Hơn nữa nó sẽ thiết lập 1 cột khóa auto-increment để lưu trữ giá trị nếu kiểu khóa là số nguyên.Quy ước về mối quan hệ: Entity Framework cung cấp các quy ước khác nhau để nhận biết 1 mối quan hệ giữa 2 model dựa vào tên của thuộc tính và kiểu dữ liệuĐể tìm hiểu chi tiết hơn mình sẽ làm 1 ví dụ bên dưới.Với cách tiếp cận code-first, Entity Framework sẽ tạo những đối tượng người tiêu dùng bảng cơ sở tài liệu dựa trên Mã Sản Phẩm mà bạn tạo để trình diễn tài liệu ứng dụng. Một vài quy ước của code first được cho phép tự động hóa thông số kỹ thuật 1 Model như sau : Quy ước tên bảng : Khi tạo 1 class miêu tả những thực thể là User sẽ được tàng trữ trong database thì Entity Framework sẽ tự động hóa tạo ra 1 bảng có tên là UsersQuy ước khóa chính : Khi bạn tạo 1 thuộc tính có tên là UserId trong lớp User của Model thì thuộc tính này được nhận làm. Hơn nữa nó sẽ thiết lập 1 cột khóa auto-increment để tàng trữ giá trị nếu kiểu khóa là số nguyên. Quy ước về mối quan hệ : Entity Framework cung ứng những quy ước khác nhau để nhận ra 1 mối quan hệ giữa 2 Mã Sản Phẩm dựa vào tên của thuộc tính và kiểu dữ liệuĐể tìm hiểu và khám phá cụ thể hơn mình sẽ làm 1 ví dụ bên dưới .Bạn đang xem : Code first là gì
II. Tạo 1 ứng dụng ASP .NET MVC với cách tiếp cận code first
Bước 1. Tạo project
Trong bài viết này mình sử dụng Visual studio 2019 và SQL Sever 2014Tiến hành mở và tạo 1 proejct ASP .NET MVC như sau :
Bạn đang xem: Code first là gì
Bạn đang đọc: Code First Là Gì – Entity Framework Code First Toàn Tập
Xem thêm: Giao Thức Sip Là Gì ? Tìm Hiểu Về Sip Server, Sip Account, Sip Phone
Bước 2. Tạo Model
Tiếp theo chọn MVC để có những thành phần thiết yếuVì là code first nên tất yếu mình sẽ tạo những Mã Sản Phẩm bằng code tiên phong rồiTạo 3 Class có tên Student, Course, Enrollment, nhớ là không nên đặt tên có ký tự ” s ” ( Số nhiều ) vì quy trình generate ở database sẽ tạo ra bảng có thêm 1 ký tự ” s ” nữa đằng sauCấu hình Class Student như sau :using System ; using System. Collections. Generic ; using System. Linq ; using System. Web ; namespace MyCodeFirst. Models { public class Student { public int Id { get ; set ; } public string LastName { get ; set ; } public string FirstName { get ; set ; } public DateTime EnrollmentDate { get ; set ; } public virtual ICollectionEnrollments { get ; set ; } } } Mình sẽ lý giải cụ thể 1 số ít điều ở class nàyBảng Student sẽ liên kết với bảng Enrollment, để định nghĩa ta dùng từ khóa virtual và 1 kiểu dữ liệu là Iconnection (tham số là 1 Enrollment entity ta sẽ định nghĩa sau)=> ta đã định nghĩa được 1 bảng Student được mapping sang 1 bảng Enrollment và bảng này sẽ có khóa ngoại là StudentIDBảng Student sẽ link với bảng Enrollment, để định nghĩa ta dùng từ khóa virtual và 1 kiểu tài liệu là Iconnection ( tham số là 1 Enrollment entity ta sẽ định nghĩa sau ) => ta đã định nghĩa được 1 bảng Student được mapping sang 1 bảng Enrollment và bảng này sẽ có khóa ngoại là StudentIDTương tự ta sẽ code 2 class Enrollment và Course như sauEnrollment. cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace MyCodeFirst.Models { public class Enrollment { public int EnrollmentID { get; set; } public int Grade { get; set; } public int CourseID { get; set; } public int StudentID {get; set;} public virtual Student Student { get; set; } public Course Course { get; set; } }}Course.csusing System;using System.Collections.Generic;using System.Linq;using System.Web;using System.ComponentModel.DataAnnotations.Schema;namespace MyCodeFirst.Models { public class Course { //Sử dụng anotation để tự sinh các mã tự động trong database public int CourseID { get; set; } public string Title { get; set; } public int Credits { get; set; } public virtual ICollectionEnrollments { get; set; } }}
Bước 3. Connect database
Mở Sql Sever và tiến hành tạo 1 database có tên MyCodeFirst
Chọn property của sever để lấy sever nameVào Project => Manager nuget package => Chọn tab browse và tìm entity framework như hìnhVào Sever Explorer => Chọn Connect to database => Nhập tên sever và chọn database vừa tạoTiếp theo ta click chuột phải vào data connection vừa liên kết => Property => Coppy connection string
Mở file webconfig.cs thêm đoạn tương tự (connection string của bạn sẽ khác) sau vào trong thẻ configuration
Xem thêm: Hình Nào Sau Đây Không Thuộc Khối Tròn Xoay ? Hình Nào Sau Đây Thuộc Khối Tròn Xoay : A
B4. Tạo Data accept layer chứa các context
Vào project tạo thêm 1 thư mục có tên DAL => Tạo 1 class có tên MyCodeFirstContext.cs và cấu hình như sauVào project tạo thêm 1 thư mục có tên DAL => Tạo 1 class có tên MyCodeFirstContext. cs và thông số kỹ thuật như sauusing MyCodeFirst. Models ; using System ; using System. Collections. Generic ; using System. Data. Entity ; using System. Linq ; using System. Web ; namespace MyCodeFirst. DAL { public class MyCodeFirstContext : DbContext { public MyCodeFirstContext ( ) : base ( ” MyCodeFirstContext ” ) { } public DbSet Students { get ; set ; } public DbSet Enrollments { get ; set ; } public DbSet Courses { get ; set ; } } } Xong xuôi hãy triển khai rebuild project, đây là bắt buộc
B5. Tạo controller và view
Chuột phải thư mục controller => add => Add new scaffolded Item => MVC 5 Controller with view, using entity framewrokỞ đây tất cả chúng ta sẽ generate cả controller và view của Student Mã Sản Phẩm, với Course và Enrollment những bạn làm tựa như nhéRun app và được kết quảRun app và được kết quảTrong database đã có những bảng
Các bước thực hiện khi thay đổi Model trong Code First
Đôi khi vì nghiệp vụ ta cần phải thay đổi các bảng trong database, với code first ta phải thực hiện như sau, ở đây mình sẽ thay đổi class model Student như sauĐôi khi vì nhiệm vụ ta cần phải biến hóa những bảng trong database, với code first ta phải thực thi như sau, ở đây mình sẽ đổi khác class Mã Sản Phẩm Student như sauusing System ; using System. Collections. Generic ; using System. Linq ; using System. Web ; namespace MyCodeFirst. Models { public class Student { public int Id { get ; set ; } public string LastName { get ; set ; } public string FirstName { get ; set ; } public string Address { get ; set ; } / / Mình thêm trường address public DateTime EnrollmentDate { get ; set ; } public virtual ICollectionEnrollments { get ; set ; } } } Ta vào tool => Nuget package manager => Package manager consoleThực hiện 3 câu lần lượt : enable-migrationsAdd-Migration AddAddressToStudentUpdate-DatabaseKết qua ta đã có thêm cột address trong bảng student
Tổng kết
Do bảng student đã đổi khác nên bạn cùng cần xóa StudentController và những View tương ứng và tạo lại như bước 5 để tránh lỗi nhé+ Ưu điểm : Rất thông dụng ( vì những lập trình viên thường không thích phong cách thiết kế DB, nhưng thích phong cách thiết kế class ) Kiểm soát trọn vẹn code Model, thêm xóa sửa thuộc tính vô cùng dễ dàngKhông phải nặng đầu tâm lý 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ôiCó thể version control Database .
+ Nhược điểm : Các biến hóa cấu trúc trực tiếp trên DB sẽ mấtKhó trấn áp những column sẽ tạo trên DbHơi khó khi tích hợp với Db có sẵn .Theo mình code-first sẽ giúp tất cả chúng ta nắm và hiểu được cơ bản về quy trình generate tài liệu, sẽ giúp cho người mới học hoàn toàn có thể thuận tiện tiếp cận. Đặc biệt nó giúp cho ta dữ thế chủ động hơn trong việc thêm sửa hay xóa Mã Sản Phẩm .Bài viết được tham khảo từ blog của anh haitqd, đây là bài viết tiếp theo về series asp .net mvc của mình, mọi người cho mình nhận xết để thay đổi tốt hơn cũng như động lực để mình làm các bài viết tiếp theo nhé Bài viết được tìm hiểu thêm từ blog của anh haitqd, đây là bài viết tiếp theo về series asp. net mvc của mình, mọi người cho mình nhận xết để đổi khác tốt hơn cũng như động lực để mình làm những bài viết tiếp theo nhé