Entity Framework Core
Tiếp theo, chúng ta sẽ thêm Entity Framework Core vào dự án để thao tác với CSDL.
-
Thêm chuỗi kết nối CSDL vào file
appsettings.json
với tên tự chọn (ví dụ DemoContext){ /* Các cài đặt khác */ "ConnectionStrings": { "DemoContext": "Server=localhost;Database=DemoDB;User Id=demouser;Password=demopass;" } }
Gợi ý: Nếu bạn lưu source code lên Gitlab hoặc Github, thêm
appsettings.json
vào file.gitignore
để tránh công khai tham số kết nối đến CSDL. -
Mở trình quản lý NuGet
-
Cài đặt các thư viện sau tùy vào hệ quản trị CSDL:
- Microsoft.EntityFrameworkCore.SqlServer
- Microsoft.EntityFrameworkCore.Sqlite
- Npgsql.EntityFrameworkCore.PostgreSQL
- MySql.Data.EntityFrameworkCore
- Danh sách các thư viện khác tại Microsoft Docs
-
Cài thêm gói Microsoft.EntityFrameworkCore.Tools để hỗ trợ phát sinh model từ CSDL có sẵn (database-first)
-
Mở cửa sổ Package Manager Console ở góc phải dưới Visual Studio, gõ vào dòng lệnh để tự động tạo model từ CSDL với thông số kết nối đã thêm vào
appsettings.json
.Scaffold-DbContext Name=DemoContext Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models/EFCore -DataAnnotations
Trong đó 2 tham số đầu tiên không cần viết tên tham số nếu đặt đúng thứ tự:
- -Connection: chuỗi kết nối đến CSDL hoặc tên được khai báo trong
appsettings.json
(bắt buộc, tham số đầu tiên). - -Provider: thư viện dùng kết nối đến CSDL tùy vào hệ quản trị CSDL (bắt buộc, tham số thứ 2).
- -OutputDir: thư mục lưu các class được sinh ra.
- -DataAnnotations: tham số này dùng để sinh metadata cho các model được sinh ra (cần attribute [Key] cho khóa chính để xây dựng các controller OData sau này).
- Các tham số khác của công cụ
Scaffold-DbContext
tham khảo tại Microsoft Docs.
- -Connection: chuỗi kết nối đến CSDL hoặc tên được khai báo trong
-
Thêm nội dung sau vào file
Startup.cs
public void ConfigureServices(IServiceCollection services) { services.AddDbContext<AdventureWorksContext>(); /* các cài đặt khác */ }