Tạo 1 project mvc .net api dbContext 1. dotnet new mvc -n proMvcApi - chạy thử: dotnet run , dotnet watch run 2. Cài đặt các package cần thiết //dotnet add package Microsoft.EntityFrameworkCore.SqlServer --prerelease //Bắt buộc a. dotnet add package Microsoft.EntityFrameworkCore --version 9.0.9 //Nếu dùng sql server b. dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 9.0.9 //Nếu dùng mysql: //EF migration c. Microsoft.EntityFrameworkCore.Tools -v 9.0.9 Microsoft.EntityFrameworkCore.Design -v 9.0.9 #Nên cùng version để tương thích tools: để tạo các scaffold (CRUD) dotnet tool install -g dotnet-ef --version 9.0.10 dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design 3. Sinh ra các model và DbContext từ tool dotnet ef dbcontext scaffold "Server=localhost\SqlExpress;Database=mvcapiquanlysach ;Trusted_Connection=True;TrustServerCertificate=True" Microsoft.EntityFrameworkCore.SqlServer -o Models -c AppDbContext --context-dir Data Có thể kiểm tra instance SqlServer chạy chưa sqlcmd -S localhost\SQLEXPRESS -E sqlcmd -S localhost\SQLEXPRESS -U sa -P YourPassword 4. Thêm ConnectionStrings vào appsetting.json 5. Đăng ký DbContext trong program.cs a. Thêm thu viện using proMvcApi.Data; using Microsoft.EntityFrameworkCore; b. lấy chuỗi kết nối string conn = builder.Configuration.GetConnectionString("Ten-ket-noi"); c. Thêm AppDbContext vào service builder.Services.AddDbContext(o=>o.UserSqlServer(connStr)); -----Nội dung program.cs------------- using proMvcApi.Data; using Microsoft.EntityFrameworkCore;//.SqlServer; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); string connStr = builder.Configuration.GetConnectionString("conn1"); builder.Services.AddDbContext(o=>o.UseSqlServer(connStr)); var app = builder.Build(); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseRouting(); app.UseAuthorization(); app.MapStaticAssets(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}") .WithStaticAssets(); app.Run(); ------------------ 6. Tạo controller cho api trong ApiControllers và controller cho MVC trong Controlers //Cũ: dotnet new controller -name ProductsController -api Tạo controller cho Api và mvc: Chuyển con trỏ vào các folder và chạy các lệnh: dotnet new apicontroller -n ProductController dotnet aspnet-codegenerator controller -name ProductsController -api -async -outDir Controllers dotnet new mvccontroller -n ProductController Hoặc tạo scaffold a. - API Controller: Save trong ApiControllers dotnet aspnet-codegenerator controller -name SachController -api -async -m Sach -dc AppDbContext -outDir ApiControllers dotnet aspnet-codegenerator controller -name ChudeController -api -async -m ChuDe -dc AppDbContext -outDir ApiControllers b. -MVC Controller (+view) trong Controllers dotnet aspnet-codegenerator controller -name SachController -async -m Sach -dc AppDbContext -outDir Controllers dotnet aspnet-codegenerator controller -name ChudeController -m ChuDe -dc AppDbContext -outDir Controllers 7. Run project: dotnet run Hoặc dotnet watch run