Download miễn phí Giáo trình LINQ to SQL Tutorial - Phần Truy vấn cơ sở dữ liệu





Một trong những yêu cầu chung khi viết các trang web là bạn phải có khả năng phân trang một cách
hiệu quả. LINQ cung cấp sẵn hai hàm mở rộng cho phép bạn có thể làm điều đó một cách dễ dàng và hiệu quả – hàm Skip() và Take().
Bạn có thể dùng Skip() và Take() như dưới đây đê chỉ ra rằng bạn chỉ muốn lấy về 10 đối tượng sản
phẩm – bắt đầu từ một sản phẩm cho trước mà chúng ta chi ra trong tham số truyền vào:



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

to SQL Tutorial
22
Có một điều hay là những thay đổi ở trên hoàn toàn được thực hiện ở lớp ánh xạ LINQ to SQL – có
nghĩa là tất cả những đoạn lệnh mà tui đã viết trước đây đều có thể tiếp tục làm việc mà không cần
thay đổi bất ký điều gì. Điều này giúp tránh phải thay đổi lại code ngay cả nếu sau này bạn muốn
dùng một hàm SPROC tối ưu hơn sau này.
8. Tổng kết
LINQ to SQL cung cấp một cách thức đơn giản, sáng sủa để mô hình hóa lớp dữ liệu trong ứng dụng
của bạn. Môt khi bạn đã định nghĩa mô hình dữ liệu, bạn có thể thực hiện các câu truy vấn, thêm, cập
nhật và xóa dữ liệu một cách dễ dàng và hiệu quả.
Dùng trình thiết kế LINQ to SQL có sẵn trong Visual Studio và Visual Web Developer Express, bạn
có thể tạo và quản lý mô hình dữ liệu cực kỳ nhanh. Trình LINQ to SQL designer cũng vô cùng mềm
dẻo để bạn có thể tùy biến các hành vi mặc nhiên và ghi đè hay mở rộng hệ thống sao cho phù hợp
với những yêu cầu cụ thể nào đó.
Trong những bài tiếp theo tui sẽ dùng mô hình dữ liệu chúng ta đã tạo ra trong bài này để đào sau
hơn vào việc truy vấn, thêm, cập nhật và xóa dữ liệu. Trong các bài viết về cập nhật, thêm, xóa tui
cũng sẽ thảo luận về cách thêm các đoạn lệnh để kiểm tra dữ liệu cũng như các quy tắc vào các lớp
thực thể chúng ta đã định nghĩa ở trên.
Mike Taulty cũng có một số đoạn video rất hay về LINQ to SQL mà bạn nên xem tại đây. Chúng
cung cấp một cách tuyệt vời để học bằng cách xem những người khác từng bước sử dụng LINQ to
SQL.
LINQ to SQL Tutorial
23
Bài 3: Truy vấn Cơ sở dữ liệu
Tháng trước tui bắt đầu viết loạt bài về LINQ to SQL. LINQ to SQL là một bộ khung (framework)
có sẵn cho O/RM (object relational mapping) trong .NET 3.5, nó cho phép bạn dễ dàng mô hình hóa
các CSDL quan hệ dùng các lớp .NET. Bạn có thể dùng các biểu thức LINQ để truy vấn CSDL, cũng
như có thể cập nhật/thêm/xóa dữ liệu từ đó.
Trong bài viết này, tui sẽ đi sâu hơn vào cách chúng ta dùng mô hình dữ liệu đã tạo trong phần 2, và
cách dùng nó để truy vấn dữ liệu bên trong một dự án ASP.NET.
1. Mô hình hóa CSDL Northwind dùng LINQ to SQL
Trong phần 2 của loạt bài này, tui đã đi qua các bước để tạo một mô hình các lớp LINQ to SQL bằng
cách dùng trình LINQ to SQL có sẵn trong VS 2008. Dưới đây là một hình mà tui đã tạo dùng CSDL
mẫu Northwind:
2. Lấy các sản phẩm
Một khi đã định nghĩa mô hình dữ liệu như trên, chúng ta có thể dễ dàng truy vấn và lấy dữ liệu từ
CSDL. LINQ to SQL cho phép bạn làm điều này bằng cách viết các câu truy vấn dùng cú pháp
LINQ với lớp NorthwindDataContext mà chúng ta đã tạo dùng trình thiết kế LINQ to SQL designer
ở trên.
Ví dụ, để lấy và duyệt qua một tập các đối tượng Product, tui có thể viết code như dưới đây:
LINQ to SQL Tutorial
24
Trong câu truy vấn trên, tui đã dùng một mệnh đề “where” trong cú pháp LINQ để chỉ trả về các sản
phẩm trong một category cho trước. tui hiện đang dùng CategoryID của Product để thực hiện lọc ra
các dùng mong muốn.
Một trong những điểm hay là tui có rất nhiều lựa chọn, rất nhiều cách để tùy biến câu lệnh, và tui có
thể nắm bắt ưu điểm của mối quan hệ giữa các thực thể mà tui đã tạo khi mô hình hóa các lớp để làm
cho câu lệnh phong phú và tự nhiên hơn. Ví dụ, tui có thể sửa lại câu truy vấn để lọc ra các dòng theo
CategoryName thay vì CategoryID bằng cách viết câu lệnh LINQ như sau:
Chú ý cách tui dùng thuộc tính “Category” trên mỗi đối tượng Product để lọc theo CategoryName
của Category chứa Product đó. Thuộc tính này được tự động tạo ra bởi LINQ to SQL vì chúng ta đã
mô hình hóa các lớp Category và Product như một mối quan hệ một-nhiều.
Một ví dụ khác về cách dùng quan hệ trong mô hình dữ liệu bên trong các câu truy vấn, chúng ta có
thể viết câu lệnh LINQ như dưới đây để lấy về chỉ những Product có 5 hay hơn đơn đặt hàng:
Chú ý cách chúng ta đã dùng tập hợp “OrderDetails” mà LINQ to SQL đã tạo trên mỗi lớp Product
(nhờ vào mối quan hệ một-nhiều mà chúng ta đã mô hình hóa trong trình thiết kế LINQ to SQL).
LINQ to SQL Tutorial
25
3. Trực quan hóa các câu truy vấn LINQ to SQL trong trình gỡ lỗi
Các trình ánh xạ O/R (Object relational mapper) như LINQ to SQL tạo ra và thực thi các câu lệnh
SQL một cách tự động mỗi khi bạn thực hiện một câu truy vấn hay cập nhật mô hình đối tượng của
nó.
Một trong những điều quan tâm lớn nhất mà các lập trình viên mới quen với ORM là: “Câu lệnh
SQL thực sự được thực thi là gì?”. Một điều thực sự thú vị về LINQ to SQL là nó cho phép xem rất
dễ dàng câu lệnh SQL được thực thi thực sự khi bạn chạy ứng dụng trong chế độ gỡ lỗi.
Bắt đầu từ bản Beta2 của VS 2008, bạn có thể dùng một LINQ to SQL visualizer plug-in để xem một
cách dễ dàng (và kiểm tra) bất kỳ câu lệnh truy vấn LINQ to SQL nào. Chỉ cần đặt một breakpoint và
di chuột lên trên một câu lệnh LINQ to SQL, sau đó nhấn vào biểu tượng chiếc kính lúp để xem giá
trị của câu lệnh một cách trực quan:
Một cửa sổ sẽ hiện lên cho phép bạn xem một cách chính xác câu lệnh LINQ to SQL mà LINQ to
SQL sẽ dùng để lấy về các đối tượng Product:
Nếu bạn nhấn nút “Execute” trên cửa sổ này, nó sẽ cho phép bạn chạy câu lệnh SQL trực tiếp trong
trình debugger và xem một cách chính xác dữ liệu được trả về:
LINQ to SQL Tutorial
26
Điều này rõ ràng làm cho việc xem những gì LINQ to SQL làm cho bạn trở thành cực kỳ dễ dàng.
Nhớ rằng bạn có thể dễ dàng thay thế câu SQL mà LINQ to SQL thực thi nếu muốn - mặc dù trong
98% trường hợp tui nghĩ bạn sẽ thấy rằng câu lệnh mà LINQ to SQL thực thi là thực sự, thực sự tốt.
4. Gắn nối các câu truy vấn LINQ to SQL vào các control LINQ to SQL
Các câu truy vấn LINQ trả về kết quả mà nó sẽ implement interrface IEnumerable – đây cũng là
interface mà các control ASP.NET dùng để hỗ trợ gắn nối các đối tượng. Điều này có nghĩa là bạn có
thể gắn nối kết quả của bất kỳ câu lệnh LINQ, LINQ to SQL hay LINQ to XML vào bất kỳ control
ASP.NET nào.
Lấy ví dụ, bạn có thể khai báo một control trong một trang .aspx giống như sau:
tui cũng có thể gắn nối kết quả của câu LINQ to SQL đã viết trước đây vào GridView giống như
sau:
LINQ to SQL Tutorial
27
Nó sẽ sinh ra một trang trông như sau:
5. Data Sharping
Hiện tại, mỗi khi xác định kết quả truy vấn, chúng ta lấy toàn bộ các cột dữ liệu cần thiết cho các đối
tượng thuộc lớp Product:
Ví dụ, câu truy vấn sau lấy về các sản phẩm:
Và toàn bộ kết quả được trả về:
LINQ to SQL Tutorial
28
Thường thì chúng ta chỉ muốn trả về một tập con của dữ liệu về mỗi sản phẩm. Chúng ta có thể dùng
chức năng data shaping mà LINQ và các trình dich C#, VB mới hỗ trợ để chỉ ra rằng chúng ta chỉ
muốn một tập con bằng cách chỉnh sửa lại câu truy vấn như sau:
Điều này sẽ trả về chỉ một tập con dữ liệu được trả về từ CSDL:
LINQ to SQL Tutorial
29
Một điều thực sự thú vị về LINQ to SQL là tui có thể tận dụng tất cả ưu điểm của các quan hệ trong
mô hình dữ liệu khi muốn gọt giũa lại dữ liệu. Nó cho phép tui biểu diễn đầy đ
 

Các chủ đề có liên quan khác

Top