Bài 1: Giới thiệu về Trình quản lý quảng cáo
📘 Bài giảng: Kết nối cơ sở dữ liệu với Entity Framework (Database First) trong Visual Studio
1. Chuẩn bị cơ sở dữ liệu
Trước hết, chạy script SQL sau trong SQL Server Management Studio (SSMS) để tạo database:
-- Tạo Database
CREATE DATABASE WebVideo;
GO
USE WebVideo;
GO
-- Bảng học viên
CREATE TABLE HocVien (
ID INT IDENTITY(1,1) PRIMARY KEY,
HoTen NVARCHAR(100) NOT NULL,
Email NVARCHAR(100) UNIQUE NOT NULL,
MatKhau NVARCHAR(200) NOT NULL,
SoDienThoai NVARCHAR(20),
NgayDangKy DATETIME DEFAULT GETDATE(),
TrangThai BIT DEFAULT 1 -- 1: đang hoạt động, 0: khóa
);
-- Bảng khóa học
CREATE TABLE KhoaHoc (
ID INT IDENTITY(1,1) PRIMARY KEY,
TenKhoaHoc NVARCHAR(200) NOT NULL,
MoTa NVARCHAR(MAX),
NgayTao DATETIME DEFAULT GETDATE(),
TrangThai BIT DEFAULT 1
);
-- Bảng video (thuộc về khóa học)
CREATE TABLE Video (
ID INT IDENTITY(1,1) PRIMARY KEY,
TieuDe NVARCHAR(200) NOT NULL,
MoTa NVARCHAR(MAX),
Url NVARCHAR(500) NOT NULL,
NgayDang DATETIME DEFAULT GETDATE(),
KhoaHocID INT FOREIGN KEY REFERENCES KhoaHoc(ID) ON DELETE CASCADE
);
-- Bảng Admin / Nhân viên quản trị
CREATE TABLE AdminUser (
ID INT IDENTITY(1,1) PRIMARY KEY,
HoTen NVARCHAR(100) NOT NULL,
Email NVARCHAR(100) UNIQUE NOT NULL,
MatKhau NVARCHAR(200) NOT NULL,
TrangThai BIT DEFAULT 1
);
-- Bảng vai trò
CREATE TABLE VaiTro (
ID INT IDENTITY(1,1) PRIMARY KEY,
TenVaiTro NVARCHAR(50) NOT NULL
);
-- Bảng phân quyền
CREATE TABLE Quyen (
ID INT IDENTITY(1,1) PRIMARY KEY,
TenQuyen NVARCHAR(100) NOT NULL,
MoTa NVARCHAR(200)
);
-- Mapping AdminUser ↔ VaiTro
CREATE TABLE AdminUser_VaiTro (
AdminID INT FOREIGN KEY REFERENCES AdminUser(ID) ON DELETE CASCADE,
VaiTroID INT FOREIGN KEY REFERENCES VaiTro(ID) ON DELETE CASCADE,
PRIMARY KEY(AdminID, VaiTroID)
);
-- Mapping VaiTro ↔ Quyen
CREATE TABLE VaiTro_Quyen (
VaiTroID INT FOREIGN KEY REFERENCES VaiTro(ID) ON DELETE CASCADE,
QuyenID INT FOREIGN KEY REFERENCES Quyen(ID) ON DELETE CASCADE,
PRIMARY KEY(VaiTroID, QuyenID)
);
👉 Sau khi chạy xong, bạn có database WebVideoDaoTao với bảng chính HocVien để làm ví dụ CRUD.
2. Kết nối database bằng EF (Database First)
Bước 1: Thêm gói NuGet
Mở Package Manager Console (Tools → NuGet Package Manager → PMC) và chạy:
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools
Bước 2: Sinh model từ database bằng giao diện Visual Studio
-
Trong Solution Explorer, nhấp chuột phải vào Project → chọn
Add→New Item.... -
Chọn Data →
ADO.NET Entity Data Model. -
Đặt tên:
WebVideoDaoTaoModel.edmx. -
Trong hộp thoại, chọn EF Designer from database.
-
Chọn New Connection… → nhập server name (
.hoặclocalhost), chọn databaseWebVideoDaoTao. -
Test connection → OK.
-
Chọn bảng
HocVien(và có thể chọn thêmKhoaHoc,Videonếu cần). -
Hoàn tất → Visual Studio sinh ra:
-
File
WebVideoDaoTaoModel.edmx. -
Các class entity (
HocVien,KhoaHoc, …). -
Một class DbContext (ví dụ
WebVideoDaoTaoEntities).
-
3. Thao tác CRUD với bảng HocVien
Sau khi import xong, bạn đã có entity HocVien trong project
Thêm class mapHocVien để thao tác với database
using System;
using System.Collections.Generic;
using System.Linq;
namespace WebVideoDaoTao.Models
{
public class mapHocVien
{
// Hàm thêm mới học viên
public bool Add(HocVien hv)
{
try
{
using (var db = new WebVideoDaoTaoEntities())
{
// Add đối tượng hv (HocVien) vào DbSet
db.HocViens.Add(hv);
// Lưu thay đổi xuống database
db.SaveChanges();
}
return true;
}
catch
{
return false; // Trả về false nếu lỗi
}
}
// Hàm lấy toàn bộ danh sách học viên
public List<HocVien> GetAll()
{
using (var db = new WebVideoDaoTaoEntities())
{
// Lấy toàn bộ dữ liệu bảng HocVien dưới dạng List
return db.HocViens.ToList();
}
}
// Hàm lấy 1 học viên theo ID
public HocVien GetById(int id)
{
using (var db = new WebVideoDaoTaoEntities())
{
// Tìm đối tượng theo khóa chính (ID)
return db.HocViens.Find(id);
}
}
// Hàm cập nhật học viên
public bool Update(HocVien hvUpdate)
{
try
{
using (var db = new WebVideoDaoTaoEntities())
{
// Tìm học viên cần sửa trong DB
var hv = db.HocViens.Find(hvUpdate.ID);
if (hv != null)
{
// Gán lại giá trị mới
hv.HoTen = hvUpdate.HoTen;
hv.Email = hvUpdate.Email;
hv.MatKhau = hvUpdate.MatKhau;
hv.SoDienThoai = hvUpdate.SoDienThoai;
hv.TrangThai = hvUpdate.TrangThai;
// Lưu thay đổi
db.SaveChanges();
return true;
}
}
return false;
}
catch
{
return false;
}
}
// Hàm xóa học viên theo ID
public bool Delete(int id)
{
try
{
using (var db = new WebVideoDaoTaoEntities())
{
// Tìm đối tượng cần xóa
var hv = db.HocViens.Find(id);
if (hv != null)
{
// Remove khỏi DbSet
db.HocViens.Remove(hv);
// Lưu thay đổi xuống DB
db.SaveChanges();
return true;
}
}
return false;
}
catch
{
return false;
}
}
}
}
Bài tập số 13: Kết nối ứng dụng với CSDL qua Entity Framework
1. Thực hành lại toàn bộ nội dung video đã thực hiện
2. Tiếp tục thêm đầy đủ các class mapping khác: Video, Khóa học, Tài khoản admin, phân quyền, vai trò
Nộp bài:
-
Nén project đã làm và nộp file.