Bài giảng Lập trình ứng dụng quản lý - Tuần 8: LINQ cơ bản (Phần 3)

10/20/2019  
Lập trình Ứng dụng quản lý  
LINQ  
Part 3  
Nội dung  
LINQ to SQL  
1
10/20/2019  
Nội dung  
LINQ to SQL  
Tính bền vững dữ liệu  
Ứng dụng thường có nhu cầu lưu lại dữ liệu.  
Dữ liệu có thể là file text, xml, cơ sở dữ liệu  
quan hệ, …  
Trong phần mềm hướng đối tượng, dữ liệu  
cần lưu là các objects  
Lưu trữ tình trạng hiện tại  
Có khả năng tái tạo lại tình trạng đã được lưu  
2
10/20/2019  
Kiến trúc phần mềm  
Hướng tiếp cận  
Các hướng tiếp cận trong .NET  
DataSets  
Hand-coding  
ORM (DLINQ, NHibernate, …)  
3
10/20/2019  
ORM  
Lập trình hướng đối tượng là hướng tiếp cận tốt để  
xây dựng ứng dụng phức tạp. Trong lập trình hướng  
đối tượng chúng ta tương tác với các thành phần dữ  
liệu (Model) là các đối tượng.  
ORM (Object Relational Mapping), là một kỹ thuật lập  
trình thực hiện ánh xạ CSDL sang các đối tượng  
trong các ngôn ngữ lập trình hướng đối tượng như  
Java, C# …(các table tương ứng các class, mối ràng  
buộc giữa các table tương ứng quan hệ giữa các  
class ‘has a’ , ‘is a’).  
Việc sử dụng ORM cho phép lập trình viên thao tác  
với database 1 cách hoàn toàn tự nhiên, dễ hiểu  
thông qua các đối tượng. Lập trình viên không cần  
quan tâ m tới loại database, kiểu dữ liệu trong  
database…  
Tính năng, cài đặt  
ORM hỗ trợ các tính năng: caching, transaction,  
concurrency control  
Lập trình viên chỉ cần quan tâm tới việc ánh xạ các  
đối tượng sang CSDL  
LINQ to SQL (DLINQ) là 1 công cụ ORM  
4
10/20/2019  
Entity Class  
Ánh xạ class sang table thô ng qua cá c  
attribute  
Class Table  
Property Field  
DataContext  
Là đối tượng chủ chốt trong DLINQ  
Quản lý tất cả các thao tác CRUD xuống CSDL  
5
10/20/2019  
Relationships  
Ánh xạ quan hệ 1-n trong CSDL quan hệ  
Sử dụng attribute Association ở cả 2 class  
Class [1] định nghĩa OtherKey  
Class [n] định nghĩa ThisKey  
Relationships (tt)  
6
10/20/2019  
Relationships (tt)  
Mapping  
Sử dụng công cụ giúp generate mapping  
sqlmetal: thô ng qua command-line  
Sử dụng Visual Studio  
Nếu khi thực hiện thao tác ánh xạ, CSDL đã có cài đặt khoá  
ngoại thì Visual Studio tự động add các entityRef &  
entitySet vào cá c Entity  
Không cần thực hiện JOIN khi cần truy vấn thông tin  
trên nhiều table.  
7
10/20/2019  
Mapping (tt)  
Truy vấn dữ liệu  
Khai bá o dataContext  
Đối tượng DataContext có các thuộc tính ứng  
với các table dưới CSDL  
db.Customers  
db.Categories  
…  
Các thuộc tính này chính là nguồn dữ liệu cho  
các truy vấn LINQ  
8
10/20/2019  
Query  
Truy vấn chỉ được thực thi khi nào thực sự  
dùng đến  
Duyệt kết quả truy vấn  
Gá n lên control  
Cache dữ liệu  
Nếu cần dùng đến kết quả truy vấn >1 lần,  
nên cache kết quả truy vấn lại ToList/  
ToArray  
9
10/20/2019  
Compiled Queries  
Nhu cầu: dùng 1 câu query LINQ nhiều lần  
nhưng khác tham số  
Vd:  
Hiển thị danh sách học sinh của lớp  
Hiển thị danh sách hoá đơn của khách hàng  
Giải pháp:  
Viết nhiều câu query tốn kém chi phí chuyển đổi  
truy vấn LINQ sang truy vấn SQL  
Sử dụng Compiled Query: thích hợp cho web  
Compiled Queries (tt)  
10  
10/20/2019  
Compiled Queries (tt)  
Thay đổi dữ liệu  
Thay đổi dữ liệu trực tiếp lên các Entities  
Các hàm thay đổi dữ liệu  
InsertOnSubmit: thêm 1 entity  
DeleteOnSubmit: xoá 1 entity  
DeleteAllOnSubmit: xoá tất cả entities thoả điều  
kiện  
Gọi hàm DataContext.SubmitChanges() để  
lưu các thay đổi xuống CSDL  
11  
10/20/2019  
Thay đổi dữ liệu (tt)  
Thay đổi dữ liệu (tt)  
12  
10/20/2019  
Thay đổi dữ liệu (tt)  
Thay đổi dữ liệu (tt)  
13  
10/20/2019  
Thay đổi dữ liệu (tt)  
Có thể thay đổi khoá ngoại bằng cách  
Add/Remove entiry ra khỏi entitySet  
Thay đổi entityRef  
Thay đổi dữ liệu (tt)  
14  
10/20/2019  
Chấp nhận thay đổi  
Mỗi khi gọi submitChanges, toàn bộ thay đổi sẽ  
được lưu xuống CSDL  
Sau khi lưu thành công, toàn bộ thay đổi sẽ bị “bỏ  
quên”, dataContext lúc này không còn chứa bất kỳ  
thông tin nào về những thay đổi nữa.  
Khô ng có rollback khi lưu thất bại developer phải  
tự mình sửa lỗi & submitChanges lại  
Giao tá c (Transaction)  
15  
10/20/2019  
Giao tá c (Transaction)  
Luyện tập Query  
Với database Northwind. Hãy liệt kê tất cả các  
Product.  
Với database Northwind. Hãy liệt kê tất cả các  
Product theo nhó m Category.  
Với database Northwind. Hãy nhóm các đơn  
hàng của khách hàng theo năm và theo thá ng.  
Với database Northwind. Tìm tất cả các đơn hàng  
có tổng giá trị nhỏ hơn 500 triệu.  
Với database Northwind. Tìm tất cả các đơn hàng  
được lập sau năm 1997.  
Với database Northwind. Tìm tất cả các đơn hàng  
có tổng giá trị lớn hơn 600 triệu và được khách  
hàng từ USA đặt.  
16  
10/20/2019  
Luyện tập Query (tt)  
Với database Northwind, hãy tìm các Category có  
ít nhất 1 Product hết hàng.  
Với database Northwind, hãy tìm các Category  
không có Product nào hết hàng.  
Với database Northwind, hãy cho biết số lượng  
đặt hàng của mỗi khách hàng.  
Với database Northwind, hãy cho biết số sản  
phẩm trong mỗi danh mục.  
Với database Northwind, hãy cho biết tổng số  
lượng sản phẩm trong mỗi danh mục.  
Luyện tập Query (tt)  
Với database Northwind, hãy cho biết giá rẻ nhất  
trong mỗi danh mục.  
Với database Northwind, hãy cho biết sản phẩm  
rẻ nhất trong mỗi danh mục.  
Với database Northwind, hãy cho biết giá đắt  
nhất trong mỗi danh mục.  
Với database Northwind, hãy cho biết sản phẩm  
đắt nhất trong mỗi danh mục.  
Với database Northwind, hãy cho biết mức giá  
trung bình của sản phẩm trong mỗi danh mục.  
17  
pdf 17 trang myanh 32720 Free
Bạn đang xem tài liệu "Bài giảng Lập trình ứng dụng quản lý - Tuần 8: LINQ cơ bản (Phần 3)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_lap_trinh_ung_dung_quan_ly_1_tuan_8_linq_co_ban_ph.pdf