1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tiểu luận Đề tài tìm hiểu về linq

35 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm Hiểu Về LINQ
Tác giả Nguyễn Thị Bớch Ngọc
Người hướng dẫn Ts. Mai Ngọc Thắng
Trường học Trường Đại Học Ngân Hàng Thành Phố Hồ Chí Minh
Chuyên ngành Hệ Thống Thông Tin
Thể loại tiểu luận
Năm xuất bản 2021
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 35
Dung lượng 3,01 MB

Nội dung

Một khi bạn đã học được các toán tử truy vấn chuân của LINQ được cung cấp trong ngôn ngữ C# hoặc VB.NET, ban co thê truy cập bất kỳ dữ liệu nào mà LINQ hỗ trợ mà không cần phải học cú p

Trang 1

Tiều luận cuối ky - HK II Tim hiéu vé céng nghé LINO TRƯỜNG ĐẠI HỌC NGÂN HÀNG THÀNH PHÓ HÒ CHÍ MINH

KHOA HE THONG THONG TIN QUAN LÝ

Trang 2

Tiều luận cuối ky - HK II Tim hiéu vé céng nghé LINO

MUC LUC LỜI MỞ ĐẦU - 225222222 2221122221122221122111122111122111211112121112011211121 2 ere 4 TIM HEU VE LINQ 1n -4 6

L Gi0i thiGu VE LINQ cccccccccccccccccsscsscsscesesssesvessessesvessessessessessissessesstssessvsseevsetevsevees 6

IL Giới thiệu về các fray vẫn LINQ 5c HH rau 7

1 Thành phần cầu thành của LINQ 5-55 SE 1121212212122 21.112 cr tre 7 1.1 Các đữ liệu nguồn 52 SE E1 E1 1111 1t 111 1 1 1t ng rưg 8

1.2 Truy VÂn - S L1 1211111 1111011112211 121111 1101111 k1 211k kg kg vu 9

1.4 Thực thi bắt buộc tức thời s22 22 1 12211122211121711121112 2.1 eg 10 IIL Tổng quan về thiết kế @ /Đ - ST HE ng HH HH HH gu ll

2 Cầu hình và tạo ra DataContext ST HT ng nn TT TH rrrse 12

3 Tạo tổ chức các lớp mà cơ sở đữ liệu bản đồ đề bàn và xem - 2 ccsc: 12

4 DataContext tạo ra phương pháp gọi thủ tục lưu trữ và các hàm 12

5 Cầu hình một DataContext đề sử dụng các thủ tục lưu trữ dữ liệu giữa các lớp

thực thê và cơ sở đữ liệu 2S SH 1251151151112 TH He HH Hee 12

6 Thừa kế và các O / R_ Designer - c1 121111 22 112 2n tran 12

IV Các truy vẫn LINQ to SQL - TH HH reo 12

1 Tach roi DataContext da tạo ra và các lớp thực thể vào các namespaces khác

0705 ELLE EOEE CLUE CHEE cdot EE CtdEecosaee ee ciaaeeentieaeenias 12

2 Lam thế nào đề: Chỉ định lưu trữ Thực hiện thủ tục Update, Insert, va delete 13

V LINO vat cc kiéu c6 chung Mic MGM ccc cccccccccccssccsesscssesseesccsvessescessesesesseees 13

1 IEnumerable các biến trong các câu truy vẫn LING s- 5c cty 14

2 Cho phép chương trình biên dịch xử lý các loại khai báo chung 14

3 Hoạt động truy vấn cơ bản án T221 115112 n HH Hee 14

3.1 Obtaiming a Data SOUTC€ L2 20 2211112111210 1112 111181 11kg key 14 3.2 FIlterimg( LỌC) - 2 22 2211212111211 1211 1121110111181 1 1811101111111 111111112 15 3.3 Ordering (Thứ tự) - 1120121111221 122 11 1115 1811111511111 1 xe 15

K N€Cioj./adddidtddidddiẳẮaAẰẬAẰAẮAẰAAAẮẮẮ l6

3.6 Selecting (ProJecfIOT), L c2 n2 nh SH T502 11H HH ey 17

4 Chuyên đổi đữ liệu với LINQ - 5c St E1 1212112111112 11 tt trerưyn 17

Sinh viên thực hiện Nguyễn Thị Bích Ngọc - D0I

Trang 3

Tiều luận cuối ky - HK II Tim hiéu vé céng nghé LINO 4.1 Tham gia vao nhiéu yếu tô đầu vào xuất ra một trình tự .ssz se: 18

4.2 Lựa chọn một tập hợp con của mỗi phân tử nguồn C HH TT TT 11k KKk KT KT 19 4.3 Chuyên đối các đối tượng trong bộ nhớ vào XML cccsccee se, 19

4.4 Thực hiện các hoạt động trên các phân tử nguồn ¬ 20

4.5 Loại các quan hệ trong thao tác truy vấn -:- cty 21

5 Truy vẫn mà không chuyên hóa các nguồn đữ liệu - 5c cty 21

5.1 Trinh bién dịch phải suy luận ra cac loai thong tin cee 22

6 Cu phap truy van vs cu phap phurong thitc 0.ccccccecececeseecseeseseseseeseeeeeeesseneees 23 6.1 Toan tir truy van chuan mé rong cac phurong thtte ce cccccececeseeeeeeeeeeeee 23 6.2 Biểu thức Lambda - 5:22 22231222111221112211122211211111211112 11.11 ee 25

7 Các đặc trưng được LINQ hỗ trợ trong C#2.0 - + SE HH He 26

7.1 Biểu thức truy vấn - c ch HH HH HH H1 1e 26 7.2 Implictfly Typed Variables (Var) S12 v12 HH HH nhe 26 7.3 Đối tượng, và tập hợp các giá trị đầu vào se rgrereey 26

7.4 Các loại chưa xác định G9991 1195555551111 k ng nnnkv vn 27

7.5 Các phương thức mở rộng - 1 2212121112111 12211211 1181118111011 key 27

7.6 Các thuộc tính tự động thi hành L2 1222122111211 12122 1 ru 27

§ Viết câu truy vấn trong Cổ cty HH ng He 27

8.1 Để thêm các đữ liệu nguồn S1 n2 212112112121 11211 1 trrerroe 27

9 Tao các truy Na 28 9.1 Đề tạo một truy van đơn ¬ eee ccc ccee ces ecenseessecesecessecseeesseetsesesesessatees 28

9.3 Để thêm một điều kiện lọc :- 2+ 222+2221122111122111122111 2111111 tr re 29

9.4 Chỉnh sửa truy vấn - St ng 1121211121212 trưa 29 9.5 Để nhóm các kết quả - St 1 1EE2111121121111 1121151 1 11111 rrerrreg 30

9.6 To order the groups by thetr key valÌue c2 12 nh 2s rree 30

9.7 Đề giới thiệu một định đanh bằng cách sử dụng let -s-cccscscss>ẻ 30

9.8 Đề sử dụng cú pháp phương thức trong một biêu thức truy vấn 31

9.9 Dé chuyén đổi hoặc dự án trong mệnh đề select - 5 nga 31 KẾT LUẬN 5s 2E 1 H111 ng HH HH re 32 TÀI LIỆU THAM KHẢO - - SE E2 1EE1271EE1211 11 E111 1 E111 kkrrrrrerree 33 0909.).09 8 34

Sinh viên thực hiện Nguyễn Thị Bích Ngọc - D0I

Trang 4

Tiểu luận cuối kỳ - LIK II Tìm hiểu về công nghệ LINQ

LỜI MỞ ĐẦU

Công tác quản lý là một công tác không thê thiếu của tất cả các tô chức về kinh tế Với các lý do ấy thì phát triển Công nghệ - Hệ thống thông tin đã trở thành một ngành kinh tế quan trọng, đặc biệt là Công nghệ phần mềm Sự ra đời của các sản pham phan mềm đặc biệt là các phần mềm ứng dụng như quản lý trong vài năm gần đây mang lại nhiều thuận lợi trong công tác quán lý hàng hóa, quản lý nhận sự tránh sự nhằm lẫn, that thu, mất mát Tuy nhiên bên cạnh những tiện lợi mà các chương trình này mang lại, vẫn

còn nhiều khó khăn, nhược điểm cần được khắc phục Nhược điểm của các chương trỉnh

còn nhiều lý do như: Bản thân các nhà lập trình còn hạn chế về trình độ cũng như kinh

nghiệm làm phần mềm

Trong phát triển phần mềm, nhu cầu truy xuất và thao tác dữ liệu là vô cùng cần thiết Đặc biét, voi SOL Express dé truy van dit liéu ta phải dùng đến các câu lệnh Query rất phức tạp, hơn nữa đề dùng trong C# lại thêm một tầng phức tạp nữa với các câu lệnh: ConnectionString khởi tạo két néi toi Database, tự khai báo các biến đề chạy một lệnh - commnand, rồi còn phải tính toán đầu ra của câu lệnh Thật là quá phức tạp nêu như ta có một chương trình khủng

Tir do LINQ ra doi, LINQ cuốn hút các lập trình viên bởi nhiều lý do Một số lợi

ích có thê không hoàn toàn rõ ràng trong thời điểm hiện nay Tuy nhiên LINQ được thiết

kế có khá năng mở rộng nên thư viện và trình biên dịch LINQ sẽ phat triển theo thời gian

1 Chỉ cần nhớ một ngôn ngữ truy vẫn

Đây là lợi thế đầu tiên mà LINQ cung cấp cho các lập trình viên Một khi bạn đã học được các toán tử truy vấn chuân của LINQ được cung cấp trong ngôn ngữ C# hoặc

VB.NET, ban co thê truy cập bất kỳ dữ liệu nào mà LINQ hỗ trợ mà không cần phải học

cú pháp ngôn ngữ truy vấn dữ liệu đó

2 Kiểm tra kiểu dữ liệu và tên lúc biên dịch

Các truy van LINQ duoc kiểm tra kiểu đữ liệu và tên lúc biên dịch, giảm thiểu các

lỗi xuất hiện lúc thực thi Nhiều ngôn ngữ 7-SÓU chăng hạn, nhúng câu truy vấn vào

chuỗi Điều này làm trình biên dịch khó phát hiện ra lỗi và lỗi có thê xảy ra lúc thực thi Nhiều lỗi về kiểu đữ liệu và thiếu kiểu đữ liệu cho các trường dữ liệu sẽ được phát hiện

Trang 5

Tiểu luận cuối kỳ - HK II Tìm hiểu về công nghệ LINO lúc biên địch và sẽ được chỉnh sửa tại thời điểm đó

3 Dễ đọc mấ

Cú pháp của LINQ rất đơn giản do nó đã xóa bỏ đi các các đoạn mã vòng lặp, sắp xếp, gom nhóm, điều kiện phức tạp

4 Trên 50 toán tử truy vẫn chuẩn

Các toán tử truy vấn chuân được xây dựng sẵn cho phép dễ dàng thực hiện các công việc như gom nhóm, sắp xép, liên kết, tập hợp, lọc, hoặc lấy đữ liệu

Nhiều toán tử truy vấn có thể được tìm thấy trong các ngôn ngữ truy vấn cơ sở đữ liệu Nếu bạn đã từng làm việc với các ngôn ngữ truy vấn đữ liệu thì bạn có thể đễ đàng phán đoán ra chức năng của các toán tử đó Tuy nhiên cũng có vải toàn tử hoàn toàn mới,

được thêm vào đề làm việc với dữ liệu dé lam don giản hóa các đoạn mã truyền thống vốn

phức tạp và đài dòng vào trong 1 dòng lệnh

5 Kiến trúc mớ và có thÊ mớ rộng

LINOQ được thiết kế có khả năng mở rộng Có nghĩa là có thể thêm vào các toán tử khi cần thiết

Đề tài: “Tìm hiểu về LinQ”

Với đề tài được giao đã giúp em vận dụng được những hiểu biết của mình về LinQ

để xây dựng được chương trình ứng dụng thực tế cho các bài toán thu/chi, quản lí bảng điểm học lực của học sinh sinh viên trong quá trình học môn Lập trình hướng đối tượng, đáp ứng được một số yêu cầu công việc đặt ra hàng ngày

1 https:/ympsolution.blogspot.com/2013/08/bai-2-cac-loi-ich-cua-linq.html

Sinh viên thực hiện Nguyễn Thị Bích Ngọc - D01

Trang 6

Tiểu luận cuối kỳ - HK I Tìm hiểu về công nghệ LINO

TIM HIEU VE LINQ

I Giới thiệu về LINQ:

LINQ la viét tắt của Language - Infegrafed Query, là một sự đôi mới trong Visual

Studio 2008 va NET Framework 3.5, nó là cầu nỗi giữa thê giới đối tượng và thế giới dữ

liệu

Theo truyền thống, các truy vấn trên dữ liệu dé dang duoc thé hién đưới dạng

chuỗi thuần túy mà không cần kiểm tra kiểu thời gian biên dịch hoặc hỗ trợ trực quan

Ngoài ra, bạn cần học các ngôn ngữ truy vấn khác nhau cho từng loại nguồn dữ liệu khác

nhau, chăng hạn như cơ sở đữ liệu S@7,„ tài liệu XA⁄, và dich vu Web LINQ lam cho mét

truy vấn một lớp đầu tiên xây dựng trong ngôn ngữ C# và Wisual Basic Bạn có thê viết các truy vấn dựa trên một tập hợp các đối tượng bằng cách sử dụng ngôn ngữ, từ khóa và

toán tử quen thuộc Ví dụ minh họa sau đây cho thay một truy van đã hoàn thành một

phần đến cơ sở đữ liệu SÓU Server trong C#, với hỗ trợ kiểm tra kiểu hoàn chỉnh và hỗ

trợ trực quan

var companyNameQuery = Dim companyNameQuery = _

Trong Visual Studio 2008, ban có thé viết các truy van LINQ trong Visual Basic hoac C#

cho co so dir ligu SOL Server, tai ligu XME, bé dir ligu ADO.NET va bat ky bộ tinh nang TEnumerable hoac pho biến nào của các đối tượng được hỗ trợ, chăng hạn như giao diện

IEnumerable <T> Hiện tại, các nhà cung cấp bên thứ ba đang viết hỗ trợ LINQ cho ADO.NET Framework và các thực thể LINQ cho nhiều dịch vụ Web và triển khai dữ liệu khác Bạn có thê sử dụng các truy vấn LINQ trong các dự án mới hoặc các đự án hiện có

Sinh viên thực hiện Nguyễn Thị Bích Ngọc - D01

Trang 7

Tiều luận cuối ky - HK II Tim hiéu vé céng nghé LINO Yêu cầu duy nhat la cac du an nay dugc xdy dung trén NET Framework 3.5

II Giới thiệu về các truy vấn LINO

Truy vấn là biểu thức lấy đữ liệu từ đữ liệu nguồn Truy vấn thường được chỉ định

bằng ngôn ngữ truy van được thiết kế cho một mục dich cu thé Theo thoi gian, nhiều

ngôn ngữ khác nhau đã được phát triển cho các kiêu đữ liệu nguồn, chăng hạn như SOL cho cơ sở dữ liệu quan hệ và XÓery cho XA⁄U Do đó, các nhà phát triển đã học một

ngôn ngữ truy van mới cho các loại hoặc định dạng đữ liệu nguồn mà họ phải hỗ trợ

LINO đơn giản hóa tình huồng này bằng cách cung cấp một mô hình nhất quán đề xử lý các loại và định dạng đữ liệu nguồn khác nhau Trong các truy vấn LINQ, bạn phải luôn

sử dụng các đối tượng Bạn có thé str dụng cùng một mẫu truy vấn cơ bản để mã hóa và chuyên đổi đữ liệu trong tài liệu XA⁄ZU, cơ sở đữ liệu SÓQL và ADO.NET DaraSeis, đồng thời chuyên đổi chúng sang bất kỳ định đạng nào khác có sẵn cho nhà cung cấp LINQ

1 Thành phần cấu thành của LINQ:

Tắt cả các biểu thức LINQ lam viéc theo ba thao tác sau:

Sinh viên thực hiện Nguyễn Thị Bích Ngọc - D01

Trang 8

Tiều luận cuối ky - HK II Tim hiéu vé céng nghé LINO

foreach (var item in

Trang 9

Tiều luận cuối ky - HK II Tim hiéu vé céng nghé LINO

- Sử dụng LINQ đổi với cac d6i tuong collection ma implement tir

- VEnumerable hoặc IEnumerable<T> (đữ liệu được lưu trong bộ nhớ)

Được sử dụng rộng rãi đặc biệt đôi với những bài toán cân hiệu năng

cao

rF Thực hiện map các tables, views, store procedures thanh cac đôi

tượng LINQ sẽ thực hiện truy vấn trên các đối tượng đó bằng cách chuyền đổi qua lại giữa đối tượng và câu lệnh sql

- Ngoài truy vấn ta cũng có thê thực hiện thêm/sửa/xóa đữ liệu dựa LINO to SQL trên các đối tượng trên

- H6 tro transaction

- Ưu điểm: được sử dụng khá nhiều trong thực tế dưới cái tên Entity

Framework hoac Entity Framework Core

Nhược điểm: chỉ làm việc với cơ sở đữ liệu là SOL Server

Tương tự như LING to SGL nhưng hỗ trợ nhiều loại cơ sở đữ liệu

Nhược điểm: sử dụng phức tạp Nhiêu cơ sở đữ liệu không thích hợp

sử dụng chung với Ne¿

LING to DataSets |Su ket hợp giữa LINQ và ADO.NET

LINQ to XML |Truy vẫn thông tin trong ñle XA⁄ZL

Trong ví dụ trước, vì dữ liệu là một mảng nên nó hỗ trợ đầy đủ các tính năng

chung của giao điện /Emwerable <7`> Điều này có nghĩa là nó thực sự có thê được truy vấn bằng LINQ Các truy vấn được thực thi trong câu lệnh ƒoreach và ƒoreach yêu cầu 1Enumerahle hoặc IEnumerahle (T) Các loại hỗ trợ giao điện như IEmumerable (T) hoặc IQueryable (T) được gọi là các loại queryable Loại queryabile có thê cung cấp dịch vụ cho các nguồn đữ liệu LINQ mà không cần sửa đôi hoặc xử lý đặc biệt Nêu nguồn dữ liệu chưa tồn tại trong bộ nhớ dưới dạng loại geryaiie, thì trình cung cấp LINQ phải trình bày nó như vậy Ví dụ, LINQ to XML một tài liệu ÄX4⁄⁄ vào một geryabhle XElement

// Query execution

foreach (int num in numQuery)

{

Console Write(" {0,1} ", num);

Sinh viên thực hiện Nguyễn Thị Bích Ngọc - D01

Trang 10

Tiểu luận cuối kỳ - LIK II Tìm hiểu về công nghệ LINQ

}

Với LINQ to SQL, trước tiên bạn tạo đôi tượng quan hệ ánh xạ tại thời điệm thiệt

kế, được thực hiện thủ công hoặc sử dụng trình thiết kế quan hệ đối tuong (O/ R

designer) Ban viét va thyc thi cac truy van dya trén cac déi trong LINQ to SQL xử lý

giao tiếp với cơ sở đữ liệu Trong ví dụ sau, C?⁄/omer đại diện cho một bảng trong cơ sở

dữ liệu, và 7ab/e<C„sfomer> hỗ trợ các thuộc tính chung /Qeryabie<7> mà được bắt đầu từ JEmumerable<T>

// Create a data source from a SQL Server database

được thực hiện tại một số điểm nhất định

1.3 Thực thỉ truy van:

% Hoãn thực thị:

Như ở trạng thái trước, bản thân biến truy vấn chỉ chứa các lệnh truy vấn Hiện tại, việc thực thi truy vấn bị trì hoãn cho đến khi biến truy van duoc lặp lại trong câu lệnh foreach Day là cơ sở cho hoãn thực thi và điển hình trong ví đụ sau:

Trang 11

Tiểu luận cuối kỳ - LIK II Tìm hiểu về công nghệ LINQ xuyên tùy thích Ví dụ: bạn có một cơ sở đữ liệu đang được cập nhật Đăng nhập liên tục thông qua một ứng dụng riêng biệt Trong ứng dụng của bạn, bạn có thê xây dựng một truy vấn đề lây đữ liệu mới nhất và bạn có thể chạy nó liên tục trong một khoảng thời gian

đề nhận được kết quả mọi lúc

1.4 Thực thi bắt buộc tức thời:

Các truy vấn trong đó liên hợp thực hiện các chức năng trên một loạt các phần tử nguồn trước tiên phải lặp qua các phần tử Một sé vi du la truy van Count, Max, Average,

và First Những cái chạy mà không có khai báo ƒøreach rõ ràng như chính truy vấn phải

sử dụng ƒøreach đề trả về một kết quả Cũng lưu ý rằng các loại truy vấn trả về một giá trị, không phải 1a mét tap hop JEnumerable Truy van sau day tra về tổng số các số trong máng nguồn:

var evenNumQuery = from num in numbers where (num % 2) == 0 select num;

int evenNumCount = evenNumQuery.Count();

List<int> numQuery2 = (from num in numbers where (num % 2) = 0 select num).ToList();

// or like this:

//numQuery3 is still an int[] var numQuery3 =

(from num in numbers where (num % 2) == 0 select num) ToArray();

II Tổng quan về thiết kế O / R

Thiết kế quan hệ đối tượng (O2 Designer) cung cấp hình ảnh thiết kế để tạo LINQ to SQL để tô chức các thực thê và các liên kết dựa trên đối tượng (mối quan hệ) trong một mô hình đối tượng trong một ứng dụng nhằm ánh xạ các đôi tượng trong cơ sở

dữ liệu Nó cũng tạo nên một mạch kiểu rõ rang, DataContext dugc su dung dé gửi và

nhận dữ liệu giữa các lớp thực thê và cơ sở đữ liệu

O/ R Designer cing cung cap chic nang dé anh xa cac thu tuc được lưu trữ và các

hàm để triển khai các phuong thire ma DataContext tra về dữ liệu và tập trung tô chức các

lớp thực thê Cuối cùng, Ø⁄# Designer cung cấp khả năng thiết kế các mối quan hệ kế

thừa giữa các lớp thực thể

O/ R Designer tạo các tệp có phần mở rộng đbml cung cấp ánh xạ giữa các lớp và

dữ liệu LINQ to SQL Ø⁄Ñ Designer cũng tạo các kiêu aaCorrext và tô chức các lớp

thực thể Ø⁄ Designer có hai khu vực độc lập trên bề mặt thiết kế: các thực thê ở cửa số

bên trái và các phương thức ở cửa sô bên phải Cửa số các thực thể chính là bề mặt thiết

Trang 12

Tiểu luận cuối kỳ - LIK II Tìm hiểu về công nghệ LINQ

kế cho lớp thực thê, các liên kết và mức độ kế thừa Các phương thức trong ngăn bên phải

là bề mặt thiết kế hiển thị các phương pháp ánh xạ DataContext dé lưu trữ các thủ tục và hàm

1 Mo cac O7 R Designer:

Bạn có thé mo O/ R bang cách thêm một class mdi vao du an cua minh O/ R

Designer là một cách dễ dàng đề ánh xạ các đối tượng vì nó chỉ hỗ trợ ánh xạ mối quan

hé 1:1 Nói cách khác, một lớp thực thể chỉ có thể có 1:1 ánh xạ liên quan đến cơ sở đữ liệu hoặc dạng wiew Các ánh xạ phức tạp, chăng hạn như ánh xạ của một lớp thực thé

tham gia vào một bảng, hiện không khả dụng Ngoài ra, nhà thiết kế là một người tạo mã một chiều tự động Điều này có nghĩa là chỉ những thay đổi bạn thực hiện đối với Trình thiết kế bề mặt mới được phản ánh trong tập tin code Hướng dẫn thay đổi đối với tập tin code không được phản ánh trong O/ R Designer Moi thay d6i duoc thuc hién theo cach thủ công đối với tập tin code sẽ bị ghi đè khi thiết kế được lưu và code sẽ tự động phục hồi

2 Cấu hình và tạo ra DataContext:

Sau khi ban da thém lép LINQ cho SỌL vào một phần tử dự án và mở Trình thiết

kế Ø⁄ bồ cục giao diện người dùng trong thé hiện một DataContext c6 thé dinh cau

hinh DataContext dA cau hinh két nối với thông tin Thông tin được cung cấp bởi phần tử đầu tiên được trích xuất Do đó, Dz/aCowex được câu hình bằng cách sử dụng thông tin

kết nỗi của phan tử lần đầu tiên được dua vao bé mat thiét ké

3 Tạo tô chức các lớp mà cơ sở dữ liệu bản đồ để bàn và xem:

Bạn có thê tạo các lớp thực thể được ánh xạ từ các bang va dang view bang cach

kéo và thả cơ sở đữ liệu và dạng view tu co sé dt ligu Server Explorer / Explorer sang O/

R Designer trước trên bề mặt thiết kế Nếu phần tử sau này được thêm vào Ø⁄

Designer su dụng kết nối khác, bạn có thể thay déi két néi cho DataContext

4 DataContext tạo ra phương pháp gọi thủ tục lưu trữ và các hàm:

Bạn có thê tạo một 74/zCorext chứa các phương thức gọi (ánh xạ) các thủ tục và các hàm được lưu trữ bằng cách kéo chúng từ cơ sở dữ liệu Server Explorer / Explorer vao O/ R Designer Các thủ tục và hàm đã lưu trữ được chứa trong @⁄R Designer nhu các phương thức của DataContext

5 Cầu hình một DataContext để sử dụng các thủ tục lưu trữ dữ liệu lưu dữ liệu giữa các lớp thực thể và cơ sở dữ liệu:

Như đã đề cập ở trên, bạn có thé tao mét DataContext chita cac phương thức gọi các thủ tục lưu trữ và các hàm Bạn cũng có thể chí định các thủ tục Theo mặc định, bộ

Trang 13

Tiểu luận cuối kỳ - HK I Tìm hiểu về cơng nghệ LINO

nhớ duoc st dung cho LINQ to SQL để thực hiện các hành dong insert, update, va delete

6 Thừa kế và các O / R Designer:

Giống như các đối tượng khác, các lớp LINQ to SQL cé thé str dung duoc co thé được kề thừa và truy xuất bởi các lớp Mối quan hệ kế thừa được tạo trong cơ sở đữ liệu theo một số cách Ø⁄R Designer hỗ trợ khái niệm kề thừa bảng đơn vì nĩ thường được

triên khai trên các hệ thơng

IV Các truy vấn LINQ to SQL

1 Tách rời DataContext đã tạo ra và các lớp thực thể vào các namespaces khác nhau:

O⁄R Designer cung cấp các thuộc tính Cortext Namespace và Emity Namespace

trong DataContext Cac thuéc tính này xác dinh tén cla DataContext và các lớp thực thé được tạo Theo mặc định, các thuộc tinh trong va DataContext va cac thuc thé khac Cac

lớp thực thé duge tao trong img dung Namespace Dé tao ma trong mét Namespace khac với các ứng dung Namesapce, hay nhap mot gia tn vao cac thudc tinh cia Context Namespace va (hoặc Entity Namespace

2 Lam thé nao dé: Chi định lưu trữ Thực hiện thủ tục Update, Insert, và delete: Các thủ tục đã lưu trữ cĩ thê được tích hợp trong Ø⁄# Designer và được thực hiện như các phương pháp điền hình trong 2øa/2Còzzex: Chúng cũng cĩ thể được sử dụng để

ghi đè các phương thức mặc định trong LINQ to SQL để thực hiện hành vi insert, update, va delete Khi cac thay đổi được thực thẻ lưu trong một tơ chức cơ sở đữ liệu (vi

du: bang cach goi phurong thire SubmitChanges)

Nếu thủ tục được lưu trữ của bạn trả về một giá trị cần được gửi lại cho client (vi dụ: giá trị được tính tốn trong thủ tục được lưu trữ), hãy tạo các tham số của bạn đề được

lưu trữ trong thủ tục Nêu bạn khơng thê sử dụng các tham số, hãy viết một phần phương thức một phần của quá trình triên khai thay vì dựa vào các quyền phu quyét do O/ R

Designer tao ra Các thành viên được chỉ định để tạo ra giá trị Các giá trị cơ sở dữ liệu

phải được đặt chính xác thành các giá trị sau khi quá trình ƒNSER7 hoặc UPDATT đã hồn tất thành cơng

V LINQ và các kiểu cĩ chung đặc điểm:

Các truy vấn LINQ dựa trên các kiêu chung được giới thiệu trong phiên bản 2.0 của ME7 Framework Bạn khơng cần phải đi sâu vào các điểm chung trước khi bắt đầu

Trang 14

Tiểu luận cuối kỳ - HK I Tìm hiểu về công nghệ LINO

Tuy nhiên, bạn có thể muốn hiểu hai khái niệm cơ bản:

1 Khi bạn khởi tạo một tập hợp có các thuộc tính giống như 7s (7), hãy thay thé

"7" bằng kiểu đối tượng Bao gồm các đối tượng trong danh sách này Ví dụ: đanh sách các chuỗi ký tự được biểu điễn dưới đạng ⁄¡s/<s/ing> và danh sách các đối tượng khách hang cua Customer duoc biéu dién duéi dang List<Customer> Danh sach chung thuộc kiêu sinh động và có nhiều ưu điểm hơn một tập hợp lưu trữ các mục của nó dưới dạng đối tượng Nếu bạn cố gắng thém Customer vao List<string>, ban sé nhan được thông báo lỗi tại thời điểm biên dich That dé dang, that dé dang đề sử dụng các tập hop vi bạn không thê thực hiện các thao tác đã được phân loại

2 IEnumerable (T) là một giao điện cho phép bạn liệt kê một tập hợp các lớp bằng cau lénh foreach Tap hop cac lép chung hé tro [Enumerable (T) giéng voi tap hop cac I6p khéng chung nhu /Enumerable hé tro ArrayList

1 IEnumerable các biến trong các câu truy van LINQ:

Cac bién trong truy van LINQ thudéc loai /Enumerable (7) hoặc thuộc loại có

nguồn gốc như /eryabie (7) Nếu bạn nhìn vào một truy vấn với các biến kiểu

IEnumerable<Customer>, ching chi là các cách thức truy vấn Khi bạn hoàn tất, một

chuỗi không có gì hoặc nhiều đối tượng Cs(omer được tạo

IEnumerable<Customer> customerQuery =from cust ỉn customers

where cust.City == "London" selecf cust;

foreach (Customer customer in customerQuery)

{

Console WriteLine(customer.LastName + ", " + customer.FirstName);

}

2, Cho phép chương trình biên dịch xử lý các loại khai báo chung:

Nếu muốn, bạn có thể tránh cú pháp chung chung bằng cách sử dung tir khoa var

Từ khóa var cho trình biên dịch biết rằng trình biên dịch nhận ra loại biến mà truy van dang tim kiém trong cac nguon dữ liệu được chỉ định trong mệnh đề /rom Ví dụ sau cho kết quả tương tự như đoạn mã được tạo ở trên

var customerQuery2 =

from cust in customers

where cust.City == "London"

select cust;

Sinh viên thực hiện Nguyên Thị Bich Ngoc - DO1

Trang 15

Tiêu luận cuỗi kỳ - HK II Tìm hiệu về công nghệ LINQ foreach(var customer in customerQuery2)

{

Console.WriteLine(customer.LastName + ", " + cụúustomer,FirstName) ;¿

}

Từ khóa vør rất hữu ích khi các kiêu khác nhau Trong số các biến được xác định

rõ ràng, hoặc khi nó không quan trọng, chỉ định rõ ràng các kiêu chung chung, chăng hạn như những kiểu được tạo bởi các truy vấn nhóm Chúng tôi khuyên rằng khi bạn sử dụng

var, ban thay rang mã của bạn có thê khó đọc hơn đối với người khác

3 Hoạt động truy vấn cơ bản:

Chủ đề này cung cấp một giới thiệu ngắn gọn về các truy vấn LINQ và một số

minh họa về các loại thao tác điển hình mà bạn có thể thực hiện trên một truy vấn

LƯU Ý: Nếu bạn đã quen thuộc với ngôn ngữ truy vấn như SỞ, hoặc XQuery, ban

có thê bỏ qua hầu hết các chủ đề này Đọc phân tiếp theo về "mệnh dé from" dé tim hiéu

thêm về thứ tự của các mệnh đề trong biểu thức truy van LINQ

3.1 Obtaining a Data Source:

° Lay vật là một nguồn dĩ? liệu:

Trong một truy vấn LINQ, bước đầu tiên là xác định nguồn dữ liệu Trong C '#, như

trong hầu hết các ngôn ngữ lập trình, một biến phải được khai báo trước khi nó có thé

được sử dụng Trong một truy vấn trong LINQ, mệnh đề from xuất hiện đầu tiên đề giới thiệu nguồn đữ liệu (Cwsfomer) và nhiều biên (cws?)

3.2 Filtering( Loc):

Có lẽ hành động truy vấn phố biến nhất là một bộ lọc được áp dụng cho các mau trong biểu thitc logic Boolean B6 loc trợ giúp truy vấn chỉ trả về các mục cho các biểu thức đúng Các kết quả là kết quả được sử dụng với mệnh đề wi:ere Bộ lọc hiệu quả xác

định yếu tố nào sẽ bị loại trừ khỏi các nguồn liên tục Ví dụ sau chỉ trả về những khách

hàng có địa chỉ ở London

Trang 16

Tiều luận cuối ky - HK II Tim hiéu vé céng nghé LINO

var queryLondonCustomers = from cust in customers

where cust.City == "London"

select cust;

Bạn có thê sử dụng ngôn ngữ C# quen thuộc với các biéu thie logic AND va OR dé lam

việc như nhiều bộ lọc trong mệnh dé WHERE Vi du: dé chi tra lai những khách hàng có

địa chỉ ở “London” và tên là "Devon”, hãy viết đoạn mã sau:

where cust.City=="London" && cust Name = "Devon"

Đề trả về khách hàng có địa chỉ ở London hay Paris, ban sé viết mã sau:

where cust.City == "London" || cust.City == "Paris"

3.3 Ordering (Thit tu):

Noi chung, viéc sap xếp dữ liệu được trả về sẽ thuận tiện Mệnh đề orderby lam

cho các phần tử trong chuỗi trả về được sắp xếp theo so sánh tiêu chuẩn cho kiểu được yêu cầu Ví dụ: truy vấn sau có thê được mở rộng đề sắp xếp các kết quả dựa trên thuộc tinh Name Theo mặc định, vì thuộc tính Nưme là một chuỗi, nó sẽ so sánh và sắp xếp các kết quả theo thứ tự bảng chữ cái từ A đến Z

var queryLondonCustomers3 =

from cust in customers

orderby cust.Name ascending

tất cả khách hàng từ London, Paris hoặc cá nhân đều được bao gồm trong nhóm Trong

trường hợp này, cwsứ Cï#y là chìa khóa

Lưu ý: Các loại được hiển thị rõ ràng trong các ví dụ để minh họa các khái niệm Bạn

cũng có thé str dung khoa cust.Query, group, cad customer dé trinh bién dich co thé xac

dinh chinh xac loai

Trang 17

Tiêu luận cuỗi kỳ - HK II Tìm hiệu về công nghệ LINQ // queryCustomersByCity is an IEnumerable<IGrouping<string, Customer>>

var queryCustomersByCity =

group cust by cust.City;

// customerGroup is an IGrouping<string, Customer>

foreach (var customerGroup in queryCustomersByCity)

{

Console.WriteLine (customerGroup Key);

foreach (Customer customer in customerGroup)

{

Console.WriteLine(" {O}", customer.Name);

}

Khi một truy vấn kết thúc bằng mệnh đề group, kết quả của nó được trả về dưới

dạng một danh sách các danh sách Mỗi mục trong danh sách là một đối tượng có khóa

thành viên và danh sách các mục, đó là nhóm chứa khóa này Khi lặp qua một truy vẫn

dẫn đến một nhóm được sắp xếp theo trình tự, bạn cần sử dung vong lap foreach Néu ban can truy van két quả của việc chạy một nhóm, từ khóa Into có thể được sử dụng để tạo một số nhận đạng có thể được thêm vào truy vấn Các truy vấn sau sẽ chỉ trả về các nhóm chứa nhiều hơn hai khách hàng:

var custQuery =

from cust in customers

group cust by cust.City into custGroup

where custGroup.Count() > 2

orderby custGroup Key

select custGroup;

3.5 Joining:

Quá trình Join tao ra mét phép néi gitta nhiéu dir kién khéng 16 rang trong nguén

dữ liệu Ví dụ: bạn có thể thực hiện một thao tác đề tìm tất cả các khách hàng ở London

đã đặt hàng sản phẩm từ nhà cung cấp có trụ sở tại Paris Trong LINQ, mệnh dé Join luôn kết hợp các hoạt động dựa trên các tập đối tượng thay vì bảng cơ sở dữ liệu Bạn không thường xuyên sử dụng mệnh đề Join trong LINQ cũng như trong SÓL, vì các khóa ngoại LINQ được mô tả trong mô hình dưới dạng các thuộc tính có chứa một số phần

tử.Ví dụ, một đối tượng C/omer chứa một tập Order cua các đối tượng Đúng hơn là

biêu diễn một thao tác, bạn truy cập các thứ tự bằng cách sử dụng dấu chấm:

from order In Customer.Orders

3.6 Selecting (Projections):

Mệnh dé Select ra cac két quả được trả về bởi một truy vấn và chí định "hình dang" hoặc kiểu của mỗi kết quả được trả về Ví dụ: bạn có thể cho biết liệu kết quả của bạn có

bao gồm tat cả các đối tượng hay không Đối tượng Cwsfomer chỉ yêu cầu một thành viên,

Ngày đăng: 13/01/2025, 14:05

HÌNH ẢNH LIÊN QUAN

Hình  sau  cho  thấy  hoạt  động  truy  vấn  tìm  kiếm  đã  hoàn  thành.  Trong  LINQ,  việc  thực  thi  truy  vấn  tách  biệt  với  chính  truy  vấn - Bài tiểu luận Đề tài  tìm hiểu về linq
nh sau cho thấy hoạt động truy vấn tìm kiếm đã hoàn thành. Trong LINQ, việc thực thi truy vấn tách biệt với chính truy vấn (Trang 8)