You are on page 1of 7

ASP.

NET Core

Lab05: Entity Framework


1 Code First

1.1 Tạo class Loai:


namespace EFCodeFirst.Models
{
public class Loai
{
[Key]
public int MaLoai { get; set; }
[Required]
[MaxLength(50)]
public string TenLoai { get; set; }
public string MoTa { get; set; }
public string Hinh { get; set; }
}
}

1.2 Tạo class HangHoa:


namespace EFCodeFirst.Models
{
public class HangHoa
{

ThS. Lương Trần Hy Hiến, Khoa CNTT, ĐH Sư phạm TpHCM 1


ASP.NET Core

[Key]
public int MaHH { get; set; }
[Required]
[MaxLength(50)]
public string TenHH { get; set; }
public double DonGia { get; set; }
public int SoLuong { get; set; }
public string Hinh { get; set; }

public int MaLoai { get; set; }


[ForeignKey("MaLoai")]
public Loai Loai { get; set; }
}
}

Trong các model trên có sử dụng các từ khóa Required, MaxLength, Key, ForeignKey để
biểu diễn các ràng buộc.

1.3 Tạo class DbContext, đặt tên MyDbContext:


namespace EFCodeFirst.Models
{
public class MyDbContext : DbContext
{
public DbSet<Loai> Loai { get; set; }
public DbSet<HangHoa> HangHoa { get; set; }

protected override void OnConfiguring(DbContextOptionsBuilder


optionsBuilder)
{

optionsBuilder.UseSqlServer(@"Server=.;Database=EFCoreCodeFirst-
QLBH;Integrated Security=True;");
}
}
}
Có thể cấu hình appsettings.json, khai báo DI ở ConfigureService() và thêm hàm tạo cho
MyDbContext.

1.4 Gõ lệnh migration:


PM > Add-Migration EFCodeFirst.MyDBContext

Sau khi chạy, project sẽ tự thêm thư mục Migration:

ThS. Lương Trần Hy Hiến, Khoa CNTT, ĐH Sư phạm TpHCM 2


ASP.NET Core

Sau đó chạy lệnh:

PM> Update-Database

Kết quả chạy:

2 Database First

2.1 Tạo Database


CREATE DATABASE [EFCoreDBFirst-QLBH];
GO

USE [EFCoreDBFirst-QLBH];
GO

ThS. Lương Trần Hy Hiến, Khoa CNTT, ĐH Sư phạm TpHCM 3


ASP.NET Core

CREATE TABLE [dbo].[Loai](


[MaLoai] [int] IDENTITY(1,1) NOT NULL,
[Hinh] [nvarchar](max) NULL,
[MoTa] [nvarchar](max) NULL,
[TenLoai] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_Loai] PRIMARY KEY (MaLoai)
);

GO

CREATE TABLE [dbo].[HangHoa](


[MaHH] [int] IDENTITY(1,1) NOT NULL,
[DonGia] [float] NOT NULL,
[Hinh] [nvarchar](max) NULL,
[MaLoai] [int] NOT NULL,
[SoLuong] [int] NOT NULL,
[TenHH] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_HangHoa] PRIMARY KEY (MaHH)
);
GO

ALTER TABLE [dbo].[HangHoa] ADD CONSTRAINT [FK_HangHoa_Loai_MaLoai]


FOREIGN KEY([MaLoai]) REFERENCES [dbo].[Loai] ([MaLoai])
ON DELETE CASCADE
GO

2.2 Cài package Nuget


 Dùng giao diện (nên dùng vì chọn được version):
Chuột phải trên project chọn Manage Nuget packages, sau đó chọn gói tương
ứng:

ThS. Lương Trần Hy Hiến, Khoa CNTT, ĐH Sư phạm TpHCM 4


ASP.NET Core

 Dùng PM Console Command:

Install-Package Microsoft.EntityFrameworkCore

Install-Package Microsoft.EntityFrameworkCore.SqlServer

Kết quả:

2.3 Phát sinh Model từ Database


PM> Scaffold-DbContext "Server=.; Database=EFCoreDBFirst-QLBH;Integrated
Security=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

Kết quả sau khi generate:

ThS. Lương Trần Hy Hiến, Khoa CNTT, ĐH Sư phạm TpHCM 5


ASP.NET Core

3 Truy vấn, Xử lý CRUD

4 Thêm class

4.1 Tạo model KhachHang:


namespace EFCodeFirst.Models
{
public class KhachHang
{
[Key]
[MaxLength(20, ErrorMessage ="Tối đa 20 kí tự")]
public string MaKH { get; set; }
[Required]
[MaxLength(50, ErrorMessage = "Tối đa 50 kí tự")]
public string HoTen { get; set; }
[MaxLength(50)]
public string DienThoai { get; set; }
[MaxLength(150)]
public string Email { get; set; }
}
}

4.2 Thêm vào DbContext


public DbSet<KhachHang> KhachHang { get; set; }

4.3 Gõ lệnh đồng bộ:


PM> Add-Migration "AddKhachHang"

PM> Update-Database

Kết quả:

ThS. Lương Trần Hy Hiến, Khoa CNTT, ĐH Sư phạm TpHCM 6


ASP.NET Core

ThS. Lương Trần Hy Hiến, Khoa CNTT, ĐH Sư phạm TpHCM 7

You might also like