Tải bản đầy đủ (.pdf) (17 trang)

Tuan08 linq p3

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.12 MB, 17 trang )

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 hồn tồ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 khố
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 khố 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, tồn bộ thay đổi sẽ bị “bỏ
qn”, 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




Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×