Thứ Tư, 4 tháng 1, 2023

[.NET] Tìm hiểu Entity Famework Phần 2 - Truy vấn đến CSDL

Hướng dẫn truy vấn đến cơ sở dữ liệu trong Entity Framework

Mục đích khi tạo Model từ Database để truy vấn dữ liệu. Có 2 cách truy vấn dự liệu

I. Dùng câu lệnh truy vấn


1.1 Truy vấn dữ liệu là danh sách khách hàng
Đầu tiên tạo 1 controller là KhachHangController.cs trong thư mục Controller để quản lý thông tin khách hàng. Tạo 1 Action Index vói nội dung như bên dưới:
          ShopBHEntities db = new ShopBHEntities();
        // GET: KhachHang
        public ActionResult Index()
        {
            //Truy van du lieu thong qua cau lenh
            //Đối tượng lstKh sẽ lấy toàn bộ dữ liệu từ bảng khách hàng.
            var lstKh = from kh in db.KhachHangs select kh;
            return View(lstKh);
        }
Sau đó tạo tiếp 1 View Index.shtml với nội dung như bên dưới
@model IEnumerable<ShopBanHang.Models.KhachHang> 
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div> 
        <table>
            <tr>
                <td>Mã khách hàng</td>
                <td> Tên Khách hàng</td>
                <td> Địa chỉ</td>
                <td> Email</td>
                <td>Số điện thoại</td>
            </tr>
            @*Chay vong lap lay ra cac doi tuong tu list model*@
            </tr>
            @foreach(var item in Model)
            {
        <tr>
            <td>@item.MaKH</td>
            <td>@item.TenKH</td>
            <td>@item.DiaChi</td>
            <td>@item.Email</td>
            <td>@item.DienThoai</td>
        </tr>

            }

        </table>
    </div>
</body>
</html>

1.2 Truy vấn lấy ra 1 đối tượng dùng câu lệnh truy vấn.
Sử dụng trong trường hợp xem chi tiết một sản phẩm hoặc login
Tạo 1 Action có tên là TruyVanMotDoiTuong
        public ActionResult TruyVanMotDoiTuong()
        {
            //Bước 1: Lấy ra danh sách khách hàng co MaKh==4
            var lstKh = from kh in db.KhachHangs where kh.MaKH==4 select kh;
            //Bước 2: Lấy ra đối tượng khách hàng là dòng đầu tiên từ list;
            KhachHang khang =  lstKh.SingleOrDefault();
            return View(khang);
        }
Tạo 1 Views có có nội dung bên dưới để in ra tên khách hàng có mã khách hàng là 4
@model ShopBanHang.Models.KhachHang
@{
    Layout = null;
}

<p>@Model.TenKH</p>
1.3 Sắp xếp dữ liệu
Tạo Action
        public ActionResult SapXep()
        {
            var lstDSKH = from kh in db.KhachHangs orderby kh.TenKH select kh;
            
            return View(lstDSKH);
        }
Tạo Index
@model IEnumerable<ShopBanHang.Models.KhachHang>
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>SapXep</title>
</head>
<body>
    <div>
        <table>
            <tr>
                <td>Tên khách hàng</td>
                <td> Địa chỉ</td>
            </tr>

            @foreach (var item in Model)
            {
        <tr>
            <td>@item.TenKH</td>
            <td>@item.MaKH</td>
        </tr>

            }
        </table>
    </div>
</body>
</html>

1.4 Group dữ liệu

Có 2 cách group dữ liệu, group dữ liệu trong controller và group dữ liệu trong View. 
Tạo Actioction GroupDulieu

II. Dùng phương thức hỗ trợ sẵn của Entity

2.1 Truy vấn dữ liệu là danh sách khách hàng
Đầu tiên tạo 1 controller là KhachHangController.cs trong thư mục Controller để quản lý thông tin khách hàng. Tạo 1 Action Index1 vói nội dung như bên dưới:
        public ActionResult Index1()
        {
            //Truy van du lieu thong qua cau lenh
            //Đối tượng lstKh sẽ lấy toàn bộ dữ liệu từ bảng khách hàng.
            var lstKh = db.KhachHangs.ToList();
            return View(lstKh);
        }

2.2 Truy vấn lấy ra 1 đối tượng dùng câu lệnh truy vấn.
Tạo 1 Action có tên là TruyVanMotDoiTuong2
public ActionResult TruyVanMotDoiTuong2()
        {
            KhachHang khang = db.KhachHangs.SingleOrDefault(n => n.MaKH == 4);
            return View(khang);
        }
Tạo 1 View TruyVanMotDoiTuong2 có nội dung như sua để in ra tên khách hàng có mã là 4
@model ShopBanHang.Models.KhachHang
@{
    Layout = null;
}

<p>@Model.TenKH</p>


2.3 Sắp xếp dữ liệu
Tạo 1 Action là SapXep2
public ActionResult SapXep2()
        {
            List<KhachHang> lstKh = db.KhachHangs.OrderBy(n => n.TenKH).ToList();
            return View(lstKh);
        }
Tạo index tương ứng
    @model IEnumerable<ShopBanHang.Models.KhachHang>
    @{
        Layout = null;
    }

    <!DOCTYPE html>

    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>SapXep</title>
    </head>
    <body>
        <div>
            <table>
                <tr>
                    <td>Tên khách hàng</td>
                    <td> Địa chỉ</td>
                </tr>
    
                @foreach (var item in Model)
                {
                    <tr>
                        <td>@item.TenKH</td>
                        <td>@item.MaKH</td>
                    </tr>

                }
            </table>
        </div>
    </body>
    </html>


2.4 Group dữ liệu

Có 2 cách group dữ liệu, group dữ liệu trong controller và group dữ liệu trong View. 
Tạo Actioction GroupDulieu
public ActionResult GroupDuLieu()
        {
            List<ThanhVien> lstKh = db.ThanhViens.OrderByDescending(n => n.HoTen).ToList();
            return View(lstKh);
        }
Tạo View và group dữ liệu trong View
@model IEnumerable<ShopBanHang.Models.ThanhVien>

           
@{
    Layout = null;
}

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>SapXep</title>
</head>
<body>

    @foreach (var item in Model.GroupBy(n => n.LoaiThanhVien))
    {
        <div>@item.Key.TenLoai</div>
        foreach (var subitem in item)
        {
            <p>@subitem.TaiKhoan</p>
        }

    }

</body>
</html>





Không có nhận xét nào:

Đăng nhận xét