1. Trang chủ
  2. » Thể loại khác

NGHIÊN CỨU CÔNG NGHỆ WPF(WINDOWS PRESENTATION FOUNDATION)XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝ HỌC SINHTRƯỜNG TIỂU HỌC THỊ TRẤN CHỢ CHÙA

88 62 0

Đ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

Định dạng
Số trang 88
Dung lượng 10,18 MB

Nội dung

Với những ứng dụng thươngmại, chẳng hạn một ứng dụng bán hàng trực tuyến, việc cung cấp một giao diện ngườidùng mạnh có thể tạo nên sự khác biệt giữa một công ty với các đối thủ cạnh tra

Trang 1

KHOA CÔNG NGHỆ THÔNG TIN

Website: itf.ud.edu.vn, E-mail: cntt@ud.edu.vn

LUẬN VĂN TỐT NGHIỆP KỸ SƯ

NGÀNH CÔNG NGHỆ THÔNG TIN

MÃ NGÀNH : 05115

ĐỀ TÀI :

NGHIÊN CỨU CÔNG NGHỆ WPF

(WINDOWS PRESENTATION FOUNDATION) XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝ HỌC SINH TRƯỜNG TIỂU HỌC THỊ TRẤN CHỢ CHÙA

Mã số :06T4-058

06T4-018 Ngày bảo vệ: 15-16/06/2011

SINH VIÊN : NGUYỄN MINH CHÍ

Trang 2

Bách Khoa, sự giúp đỡ động viên của gia đình và bạn bè.

Trước tiên em xin chân thành cảm ơn tất cả các thầy cô của trường Đại học Bách Khoa, Đại học Đà Nẵng đã dạy dỗ và truyền đạt kiến thức cho

em trong thời gian học tại trường.

Em xin chân thành cám ơn thầy Phan Thanh Tao Cám ơn thầy đã tận tình hướng dẫn góp ý cho em trong quá trình thực hiện đồ án này Nhờ đó

mà em có thể hoàn thành theo đúng yêu cầu về nội dung của một đồ án tốt nghiệp.

Em cũng xin được cám ơn những người bạn cùng ngành đã động viên giúp đỡ em trong suốt thời gian làm đồ án.

Cuối cùng, con xin cảm ơn gia đình đã tạo mọi điều kiện tốt nhất để bản thân có thể hoàn thành được đồ án đúng hạn.

Mặc dù đã cố gắng hết sức, nhưng vì khả năng và thời gian có hạn, đề tài nghiên cứu chắc chắn còn nhiều khiếm khuyết Rất mong các Thầy Cô giáo chỉ bảo giúp đỡ Rất mong sự góp ý của bạn bè, đồng nghiệp.

Sinh viên Nguyễn Minh Chí

Truơng Văn Khánh

LỜI CAM ĐOAN

Tôi xin cam đoan:

1 Những nội dung trong báo cáo này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của thầy GV.Phan Thanh Tao.

Trang 3

3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá,

tôi xin chịu hoàn toàn trách nhiệm.

Sinh viên Nguyễn Minh Chí Trương Văn Khánh

NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN

………

………

………

………

………

………

………

………

………

………

………

………

Trang 4

………

………

………

………

………

………

………

………

………

………

………

………

………

Đà Nẵng ngày….tháng….năm 2011 Cán bộ hướng dẫn GV Phan Thanh Tao NHẬN XÉT CỦA CÁN BỘ PHẢN BIỆN ………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Trang 5

………

………

………

………

………

Cán bộ phản biện

Trang 6

MỤC LỤC MỞ ĐẦU 1

I Giới thiệu bối cảnh đề tài 1

-II Ý nghĩa thực tiễn và mục đích đề tài 2

-III Nhiệm vụ phải thực hiện 2

-III.1 Mục tiêu nghiên cứu 2

-III.2 Kết quả dự kiến 2

-III.3 Tóm tắt phương pháp triển khai 3

-III.4 Bố cục sẽ trình bày 3

CƠ SỞ LÝ THUYẾT 5

I Tổng quan về WPF(Windows presentaion foundation) 5

-I.1 Giới thiệu về WPF 5

-I.2 Mục tiêu của WPF 5

-I.3 XAML 5

-I.4 Công nghệ chung cho Windows và cho trình duyệt web 8

-I.5 Các thành phần Mã số của WPF 9

-I.6 Công cụ phát triển WPF 16

-I.7 Ứng đụng đầu tiên với WPF 17

-II LINQ 20

-II.1 Tổng quan về LINQ Mã số 20

-II.2 LINQ căn bản 21

-II.3 LinQ to Sql 26

-III Cơ sở dữ liệu SQL Server 35

-III.1 Giới thiệu về SQL Server 35

-III.2 Lịch sử phát triển 36

-III.3 Các editions của SQl server 37

-III.4 Các thành phần của SQL server 37

PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 41

I Giới thiệu bài toán 41

-II Các yêu cầu 42

-II.1 Giới thiệu 42

-II.2 Yêu cầu đặt ra 42

-II.3 Các thông tin cần quản lý 43

-III Phân tích yêu cầu 44

-III.1 Dữ liệu nhập vào 44

-III.2 Dữ liệu xuất 45

-III.3 Phân tích yêu cầu 45

-IV Phân tích hệ thống thông tin 47

-IV.1 Sơ đồ Use Case 47

-IV.2 Sơ đồ lớp của chương trình 53

-IV.3 Phân tích các chức năng trong chương trình 55

PHÁT TRIỂN VÀ ỨNG DỤNG 69

Trang 7

-II Một số kết quả đạt được 69

-II.1 Giao diện đăng nhập 69

-II.2 Giao diện chính chương trình 70

-II.3 Các Form chính của chương trình 70

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 75

I Kết luận 75

-I.1 Kết quả đạt được 75

-I.2 Hạn chế 76

-II Hướng phát triển 76

Trang 8

-MỤC LỤC CÁC BẢNG

Bảng 1.:Các thành phần trên Form đăng nhập 57

Bảng 2:Các thành phần trong Form nhập thông tin 60

Bảng 3: Các thành phần trong Form xóa 62

Bảng 4:Các thành phần trong Form tìm kiếm 65

Bảng 5:Các thành phần trong Form báo cáo thống kê 68

Trang 9

-MỤC LỤC HÌNH ẢNH

Hình 1.Tương tác giữa nhà thiết kế và lập trình viên thông qua XAML 7

Hình 2.Các thành phần cơ bản của WPF 9

Hình 3.Quan hệ giữa đối tượng dữ liệu và đối tượng phụ thuộc 15

Hình 4 Giao diện của công cụ Microsoft Expression Design 17

Hình 5 Tạo một project HelloWorld 18

Hình 6 Giao diện thiết kế ứng dụng 18

Hình 7 Xử lý sự kiện Click 19

Hình 8 Mô hình cơ sở dữ liệu LinQ to Sql 27

Hình 9 Mô hình quản lý của trường tiểu học Thị Trấn Chợ Chùa 42

Hình 10 Sơ đồ use case của Giáo Vụ trường 47

Hình 11 Biểu đồ use case quản lí hồ sơ học sinh 48

Hình 12.Biểu đồ use case quản lí hồ sơ giáo viên 48

Hình 13 Biểu đồ use case quản lí điểm học sinh 49

Hình 14 Biểu đò use case thống kê 49

Hình 15 Biều đồ use case hệ thống 50

Hình 16 Sơ đồ lớp hồ sơ Giáo Viên 53

Hình 17 Sơ đồ lớp hồ sơ Học Sinh 54

Hình 18 Sơ đồ lớp điểm 55

Hình 19.Sơ đồ hoạt động chức năng đăng nhập 56

Hình 20 Sơ đồ tuần tự chức năng đăng nhập 56

Hình 21 Giao diện trang đăng nhập 57

Hình 22 Sơ đồ hoạt động chức năng nhập thông tin và điểm 58

Hình 23 Sơ đồ tuần tự chức năng nhập thông tin và điểm 58

Hình 24 Giao diện Nhập thông tin học sinh 59

Hình 25 Giao diện Nhập điểm học sinh 59

Hình 26 Sơ đồ hoạt động chức năng Xóa 61

Hình 27 Sơ đồ tuần tự chức năng Xóa 61

Hình 28 Giao diện xóa thông tin Giáo viên 62

Hình 29 Sơ đồ hoạt động chức năng tim kiếm 63

Hình 30 Sơ đồ tuần tự chức năng tìm kiếm 64

Hình 31 Giao diện tìm kiếm học sinh 64

Hình 32.Giao diện tìm kiếm điểm học tập 65

Hình 33 Form hiển thị nội dung tìm kiếm được 66

Hình 34 Sơ đồ hoạt động chức năng thống kê 67

Hình 35 Sơ đồ tuần tự chức năng thống kê 67

Hình 36 Giao diện yêu cầu thống kê,báo cáo 68

Hình 37 Danh sách học sinh hiển thị sau khi thống kê 68

Hình 39 Giao diện đăng nhập 69

Hình 40 Giao diện chính chương trình 70

Hình 41.Thông tin hồ sơ giáo viên 70

Hình 42 Form nhập điểm cho học sinh 71

Hình 43 Form báo cáo kết quả học tập của học sinh 71

Hình 44 Form tìm kiếm điểm hóc tập của học sinh 72

Hình 45 Form thực hiện chức năng phân lớp cho học sinh 72

Hình 46 Form danh mục năm học 73

Hình 47.Form danh mục lớp 73

Hình 48 Form danh mục các môn học 74

Hình 49 Giao diện cửa sổ đổi mật khẩu 74

Trang 11

MỞ ĐẦU

.I Giới thiệu bối cảnh đề tài

Trong những năm gần đây với sự phát triển vượt trội của Công Nghệ Thông Tin,những ứng dụng của Công Nghệ Thông Tin vào khắp các lĩnh vực đời sống đã đónggóp to lớn cho sự phát triển của nhân loại về nhiều mặt Việc đưa tin học vào cáctrường học, nhà máy, công ty, các đơn vị tổ chức, doanh nghiệp và thậm chí đếntừng gia đình thay cho việc quản lý bằng tay đã tiết kiệm được thời gian, công sức vàtiền của đem lại hiệu quả cao giúp phát triển xã hội vững mạnh hơn, giàu đẹp hơn.Đặc biệt là việc phổ cập tin học trong nhà trường đang dần được triển khai đã giúpgiới trẻ ngày nay không còn lạ lẫm với những con người, đất nước trên thế giới nữa.Tin học đã thật sự đưa đất nước ta đến gần với các nước tiên tiến trên thế giới

Song, những ứng dụng của tin học không chỉ dừng ở lại đó mà nó dần được nângcao hơn nữa, nhằm đáp ứng nhu cầu sử dụng tin học ngày càng cao của con người.Ngày nay, trong các ứng dụng hiện đại, giao diện người dùng trực quan chiếm vị tríhết sức quan trọng Việc trình diễn đúng thông tin, theo đúng cách và vào đúng thờiđiểm có thể đem lại những giá trị kinh tế xã hội đáng kể Với những ứng dụng thươngmại, chẳng hạn một ứng dụng bán hàng trực tuyến, việc cung cấp một giao diện ngườidùng mạnh có thể tạo nên sự khác biệt giữa một công ty với các đối thủ cạnh tranh,góp phần làm tăng tăng doanh số và giá trị thương hiệu của hãng này so với hãngkhác Để có được một giao diện người dùng như vậy, việc tích hợp đồ họa, media,văn bản và các thành phần trực quan khác như một thể thống nhất đóng đóng vai tròmấu chốt

Cũng ví lí do đó mà chúng em đã chọn đề tài ”Nghiên cứu công nghệ WPF( Windows Presentation Foundation) - Xây dựng chương trình quản lý học sinhtrường tiểu học Thị Trấn Chợ Chùa ”

Trang 12

.II Ý nghĩa thực tiễn và mục đích đề tài

Việc quản lý lí lịch, điểm học tập học sinh và giáo viên đều dựa vào sổ sách nênviệc tra cứu, tìm kiếm rất mất thời gian và dễ xảy ra sai sót Mỗi giáo viên phải tự lưutrữ và quản lý điểm học tập của học sinh lớp mình quản lý Đến cuối học kỳ và nămhọc, giáo viên phải tổng kết điểm và đánh giá học lực của học sinh dựa vào số liệuđiểm của cả học kỳ/năm học trong sổ sách

Yêu cầu đề ra với chương trình là phải quản lý được lí lịch, điểm của học sinh và

hồ sơ giáo viên để có thể tra cứu, tổng kết kết quả học tập của học sinh một cáchchính xác và nhanh nhất Giáo viên có thể tự cập nhật, tra cứu, thống kê điểm học tậpcủa học sinh

.III Nhiệm vụ phải thực hiện

.III.1 Mục tiêu nghiên cứu

Mục tiêu và hướng nghiên cứu đề tài

Nghiên cứu và nắm vững công nghệ WPF của NET framword 3.5 sp1 ,và LinQ

To SQL

Nghiên cứu thông tin liên quan đến giáo dục cập tiểu học

Xây dựng chương trình quản lý trường tiểu học Thị Trấn Chợ Chùa

.III.2 Kết quả dự kiến

* Về mặt lý thuyết:

- Nắm vững cơ bản về công nghệ WPF( Windows Presentation Foundation) , vàcông nghệ LinQ to SQL Cách xây dựng phần mềm ứng dụng thực tiễn

- Có kinh nghệm hợp tác và làm việc theo nhóm

- Có khả năng tìm kiếm tốt trên mạng

Trang 13

- Quản lí hồ sơ học sinh.

- Quản lí điểm, kết quả học tập

.III.3 Tóm tắt phương pháp triển khai

Thu thập thông tin liên quan đến việc giáo dục cấp tiểu học hiên nay

Nghiên cứu công nghệ WPF (Window Present Foundation) và xây dựng ứng dụngthực tế

Nghiên cứu về LinQ để áp đụng mô hình kết nối cơ sở dữ liệu LinQ To SQL Tìm hiểu lý thuyết về quy trình phân tích thiết kế 1 hệ thống thông tin quản lý để

tứ đó xây dựng giải pháp cho bài toán”Xây dựng chương trình quản lí học sinh tiểuhọc”

Công cụ nghiên cứu cơ sở lý thuyết: các tài liệu tham khỏa về phân tích hệ thốngthông tin quản lý, sách tham khỏa về ngôn ngữ lập trình C #

Công cụ thiết kế và xây dựng hệ thống: Microsoft Visual Studio.NET 2008 ,Microsoft SQL Server 2000, Microsoft Expression Blend

.III.4 Bố cục sẽ trình bày

Chương 1 (Giới thiệu): Giới thiệu bối cảnh của đề tài Chọn tên đề tài, mục đích

và ý nghĩa của đề tài Nhiệm vụ phải thực hiện (các mục tiêu nghiên cứu cụ thể và kếtquả dự kiến) Tóm tắt phương pháp triển khai, tóm tắt nội dung, bố cục sẽ trình bày

Chương 2 (Cơ sở lý thuyết): Trình bày tổng quan về công nghệ WPF, những

điểm mạnh của việc ứng dụng WPF để xây dựng ứng dụng , trình bày về phương thứckết nối cơ sở dữ liệu LinQ To SQL

Chương 3 (Phân tích và thiết kế hệ thống): Giới thiệu bài toán, các yêu cầu

chức năng, phương pháp giải quyết, trình bày kết quả phân tích và thiết kế bài toángồm: phân tích chức năng như sơ đồ UseCase, sơ đồ tuần tự, thiết kế như sơ đồ lớp,giao diện,…

Chương 4 (Phát triển ứng dụng): Giới thiệu môi trường, công cụ và công nghệ

được áp dụng; và trình bày một số kết quả đạt được

Trang 14

Chương 5 (Kết luận và hướng phát triển): Trình bày, đánh giá kết quả đạt được

và chưa đạt được của chương trình, hướng bổ sung và mở rộng đề tài

Trang 15

CƠ SỞ LÝ THUYẾT

foundation)

.I.1 Giới thiệu về WPF

WPF, viết tắt của Windows Presentation Foundation, là hệ thống API mới hỗ trợviệc xây dựng giao diện đồ họa trên nên Windows Được xem như thế hệ kế tiếp củaWinForms, WPF tăng cường khả năng lập trình giao diện của lập trình viên bằng cáchcung cấp các API cho phép tận dụng những lợi thế về đa phương tiện hiện đại Là một

bộ phận của NET Framework 3.5, WPF sẵn có trong Windows Vista và WindowsServer 2008 Đồng thời, WPF cũng có thể hoạt động trên nền Windows XP Pack 2hoặc mới hơn, và cả trên Windows Server 2003

.I.2 Mục tiêu của WPF

WPF được xây dựng nhằm vào 3 mục tiêu cơ bản:

- Cung cấp một nền tảng thống nhất để xây dựng giao diện người dùng

- Cho phép người lập trình và người thiết kế giao diện làm việc cùng nhau mộtcách dễ dàng

- Cung cấp một công nghệ chung để xây dựng giao diện người dùng trên cảWindows và trình duyệt Web

.I.3 XAML

XAML là gì

XAML, viết tắt của Extensible Application Markup Language, là ngôn ngữđặc tả dựa trên XML được dùng để định nghĩa các đối tượng và thuộc tính của chúng,mối quan hệ cũng như sự tương tác XAML đặc biệt được dùng trong các công nghệcủa NET Framework 3.0 (trong đó có WPF) như ngôn ngữ đặc tả giao diện người

Trang 16

dùng (user interface - UI) nhằm mô tả cấu trúc và đặc tính của các phần tử UI, sự liênkết dữ liệu, các sự kiện và các đặc tính khác XAML là mô hình có tính đột phá tronglĩnh vực tính toán trên Internet được chấp nhận rộng rãi trong nhiều hệ thống và bởinhiều nhà cung cấp phần mềm

XAML định ra một tập các phần tử XML như Button, TextBox, Label…,nhằm định nghĩa các đối tượng đồ họa tương ứng như nút bấm, hộp thoại, nhãn…, vànhờ đó cho phép mô tả chính xác diện mạo của giao diện người dùng Các phần tửXAML cũng chứa các thuộc tính, cho phép thiết lập nhiều tính chất khác nhau của đốitượng đồ họa tương ứng Ví dụ, đoạn mã sau sẽ tạo ra một nút bấm màu đỏ có nhan

đề “Bỏ qua”

<Button Background="Red">No</Button>

Mỗi phần tử XAML lại tương ứng với một lớp WPF, và mỗi thuộc tính củaphần tử đó lại tương ứng với thuộc tính hay sự kiện của lớp này Chẳng hạn, nút bấmmàu đỏ trong ví dụ trên có thể tạo bằng C# code như sau:

Button btn = new Button();

btn.Background = Brushes.Red;

btn.Content = "No";

Nếu như mọi thứ có thể biểu diễn bằng XAML thì cũng có thể biểu diễn bằngđoạn mã, thì câu hỏi đặt ra là XAML có ý nghĩa gì? Câu trả lời là việc xây dựng cáccông cụ sinh và sử dụng các đặc tả bằng XML dễ dàng hơn nhiều so với xây dựngmột công cụ tương tự làm việc với đoạn mã Bởi vậy, XAML mở ra một cách thức tốthơn để lập trình viên và người thiết kế làm việc với nhau

Trang 17

Hình 1.Tương tác giữa nhà thiết kế và lập trình viên thông qua XAML

Vai trò của XAML trong việc tạo môi trường làm việc chung giữa người lập trình và người thiết kế giao diện

XAML đóng vai trò một ngôn ngữ chung giữa môi trường thiết kế giao diện

và môi trường lập trình Đối với người thiết kế, XAML không những cho phép ngườithiết kế dễ dàng mô tả, chỉnh sửa các đối tượng UI và các đặc tính của chúng, mà còncho phép họ tương tác với các đối tượng này ở mức độ nhất định Do vậy, tăng khảnăng cảm quan của người thiết kế đối với giao diện Ngoài ra, nó cũng giúp ngườithiết kế hạn chế những ý tưởng đồ họa không khả thi khi lập trình Đối với người lậptrình, nhờ một môi trường lập trình có khả năng tự động tái tạo giao diện đã thiết kếdựa trên file đặc tả bằng XAML do người thiết kế chuyển sang, người lập trình khôngcần tự mình tái tạo lại giao diện Điều này giảm đi nhiều công sức và thời gian đểphát triển giao diện, cũng như tránh những sai lệch giữa giao diện do người thiết kế

và giao diện do người lập trình tái tạo Vì cả môi trường thiết kế và lập trình đều cókhả năng hiểu và sử dụng XAML, ứng dụng WPF có thể chuyển qua lại giữa hai môitrường phát triển để sửa đổi hay bổ sung giao diện một cách dễ dàng Với tất cảnhững lợi điểm này, vị thế của người thiết kế trong việc xây dựng giao diện đượcnâng cao

Trang 18

.I.4 Công nghệ chung cho Windows và cho trình duyệt web

Trong thời đại bùng nổ của Internet, các ứng dụng Web ngày một phát triển Việctrang bị giao diện người dùng với đầy đủ tính năng như một ứng dụng desktop sẽ thuhút nhiều người sử dụng;, và do đó góp phần làm tăng giá trị doanh nghiệp Tuynhiên, như đã nêu trong phần đầu, với những công nghệ truyền thống, để phát triểnmột giao diện đồ họa vừa hoạt động trên desktop vừa trên trình duyệt Web, đòi hỏiphải sử dụng những công nghệ hoàn toàn khác nhau, giống như việc xây dựng haigiao diện hoàn toàn độc lập Điều này tạo ra chi phí không cần thiết để phát triển giaodiện

WPF là một giải pháp cho vấn đề này Lập trình viên có thể tạo ra một ứng dụng

trình duyệt XAML (XBAP) sử dụng WPF chạy trên Internet Explore Trên thực tế,

cùng đoạn code này có thể được dùng để sinh ứng dụng WPF chạy độc lập trênWindows

Phần giao diện của ứng dụng dạng XBAP được trình duyệt chia thành các framethay vì chạy trên các cửa sổ riêng, ngoài ra, các chức năng đều được bảo toàn Cùngmột đoạn mã được sử dụng chung cho cả hai trường hợp sẽ làm giảm khối lượng côngviệc cần thiết để phát triển hai dạng giao diện Thêm vào đó, sử dụng cùng một đoạn

mã cũng có nghĩa là sử dụng cùng kỹ năng của lập trình viên Do đó, lập trình viênchỉ cần có học một kiến thức chung là có thể sử dụng trong cả hai trường hợp Mộtlợi điểm nữa của việc dùng chung công nghệ cho cả giao diện Windows và giao diệnWeb là người xây dựng ứng dụng không nhất thiết phải quyết định trước loại giaodiện nào được sử dụng Miễn là máy client đáp ứng được những yêu cầu hệ thống đểchạy XBAP, một ứng dụng có thể cung cấp cả giao diện Windows và giao diện Web,

mà chỉ sử dụng phần lớn những đoạn mã giống nhau

Mỗi ứng dụng XBAP được download khi cần từ một Web server, nên nó phảituân theo những yêu cầu về an ninh khắt khe hơn đối với một ứng dụng Windows độclập Theo đó, XBAP chạy trong phạm vi sandbox an ninh do hệ thống an ninh truynhập mã của NET Framework cung cấp XBAP chỉ chạy với các hệ thống Windows

có cài đặt WPF và chỉ với Internet Explore phiên bản 6 và 7 trở lên

Trang 19

.I.5 Các thành phần của WPF

Giống như các thành phần khác của NET Framework, WPF tổ chức các chứcnăng theo một nhóm namespace cùng trực thuộc namespace System.Windows Bất kểchức năng nào được sử dụng, cấu trúc cơ bản của mọi ứng dụng WPF đều gần nhưnhau Là ứng dụng Windows độc lập hay là một XBAP, một ứng dụng WPF điển hìnhbao giờ cũng gồm một tập các trang XAML và phần code tương ứng được viết bằngC# hoặc Visual Basic, còn gọi là các file code-behind Tất cả các ứng dụng đều kếthừa từ lớp chuẩn Application của WPF Lớp này cung cấp những dịch vụ chung chomọi ứng dụng, chẳng hạn như các biến lưu trữ trạng thái của ứng dụng, các phươngthức chuẩn để kích hoạt hay kết thúc ứng dụng

Mặc dù WPF cung cấp một nền tảng thống nhất để tạo giao diện người dùng,những công nghệ mà WPF chứa đựng có thể phân chia thành những thành phần độclập Nhân của WPF là cơ chế tạo sinh đồ họa dựa trên vector và độc lập với độ phângiải nhằm tận dụng những lợi thế của phần cứng đồ họa hiện đại WPF được mở rộngvới các tập tính năng phát triển ứng dụng bao gồm XAML, các control, cơ chế mócnối dữ liệu, layout, đồ họa 2 chiều, ba chiều, hoạt họa, style, khuôn dạng mẫu, vănbản, media, text và in ấn WPF nằm trong NET Framework, nên ngoài ra, ứng dụngWPF có thể kết hợp các thành phần khác có trong thư viện lớp của NET Framework

Hình 2.Các thành phần cơ bản của WPF.

Trang 20

Phần tiếp theo sẽ giới thiệu sơ lược những thành phần và khái niệm quan trọngcủa WPF

LAYOUT và CONTROL

Để sắp đặt các thành phần khác nhau trên giao diện, ứng dụng WPF sử dụngpanel Mỗi panel có thể chứa các thành phần con, bao gồm các control như nút bấmhay hộp thoại, hay bản thân những panel khác Những loại panel khác nhau cho phépsắp xếp thành phần con theo những cách khác nhau Ví dụ, DockPanel cho phép cácthành phần con có thể được đặt dọc theo cạnh của panel đó, trong khi Grid cho phépsắp đặt các thành phần con của nó trên một lưới tọa độ

Giống như bất kỳ một công nghệ giao diện người dùng nào, WPF cung cấpmột số lượng lớn các control Ngoài ra, người dùng có thể tùy ý định nghĩa cáccontrol theo ý mình Các control chuẩn gồm Button, Label, TextBox, ListBox, Menu,Slider, hay phức tạp hơn có SpellCheck, PasswordBox… Các sự kiện do người dùngtạo ra, như di chuyển chuột hay ấn phím, có thể được các control nắm bắt và xử lý.Trong khi các control và các thành phần giao diện khác có thể được đặc tả đầy đủbằng XAML, các sự kiện bắt buộc phải được xử lý bằng mã trình

STYLE và TEMPLATE

Giống như sử dụng Cascading Style Sheets (CSS) đối với HTML, việc định rathuộc tính đồ họa cho các đối tượng giao diện một lần, rồi sau đó áp dụng lại cho cácđối tượng khác cùng loại thường rất tiện lợi WPF cũng cung cấp tính năng tương tựbằng việc sử dụng thành phần Style của XAML Ví dụ, kiểu ButtonStyle có thể đượcđịnh nghĩa như sau:

<Style x:Key="ButtonStyle">

<Setter Property="Control.Background" Value="Red"/>

<Setter Property="Control.FontSize" Value="16"/>

</Style>

Bất kỳ nút bấm nào sử dụng kiểu này sẽ có nền màu đỏ và sử dụng font chữ kíchthước 16

Trang 21

tự như một style, và ở hai dạng:

- Template cho dữ liệu: sử dụng thành phần DataTemplate của XAML để thiếtlập một nhóm thuộc tính hiển thị của dữ liệu như màu sắc, phương thức căn lề

- Template cho control: sử dụng thành phần ControlTemplate của XAML đểđịnh ra diện mạo của một control

TEXT

Giao diện người dùng ít nhiều đều hiển thị chữ hay text Đối với phần lớn mọingười, đọc text trên màn hình thường khó hơn đọc trên giấy in Đó là do chất lượnghiển thị text trên màn hình kém hơn so với khi in ra giấy WPF tập trung giải quyếtvấn đề này, làm chất lượng text hiển thị trên màn hình tương đương trên giấy in Cụthể, WPF hỗ trợ các font chữ OpenType chuẩn, cho phép sử dụng các thư viện font đã

có WPF cũng hỗ trợ công nghệ font chữ mới ClearType, cho phép hiển thị các ký tựmịn hơn đối với mắt người, đặc biệt là trên màn hình tinh thể lỏng (LCD)

Để nâng cao hơn nữa chất lượng hiển thị text, WPF cho phép một số công nghệkhác như chữ ghép, theo đó một nhóm ký tự được thay thế bằng một ảnh đơn nhất,tạo tâm lý thoải mái hơn khi đọc đối với người dùng

Văn bản

WPF hỗ trợ ba dạng văn bản: văn bản cố định (fixed), văn bản thích nghi(flow/adaptive) và văn bản XPS (XML Paper Specification) Kèm theo đó, WPF cũngcung cấp các dịch vụ để tạo, xem, quản lý, ghi chú, đóng gói và in ấn văn bản

Văn bản cố định trông không đổi bất kể chúng được hiển thị trên màn hình hay

in ra máy in Trong WPF, những văn bản dạng này được định nghĩa bằng phần tửFixedDocument trong XAML và được hiển thị bằng control DocumentViewer

Trang 22

Trong khi đó, văn bản thích nghi thường chỉ dùng để đọc trên màn hình, và cókhả năng tự động thay đổi các thuộc tính hiển thị ảnh và text cho phù hợp với kíchthước cửa số hay các yếu tố môi trường khác nhằm nâng cao chất lượng đọc chongười dùng Văn bản thích nghi được định nghĩa bằng phần tử FlowDocument Đểhiển thị văn bản thích nghi, WPF sử dụng một số control khác nhau, chẳng hạn nhưFlowDocumentPageViewer, FlowDocumentScrollViewer, FlowDocumentReader… Văn bản XPS xây dựng trên cơ sở văn bản bất động của WPF XPS là một địnhdạng mở theo đặc tả XML, có khả năng sử dụng trên nhiều nền tảng khác nhau, đượcthiết kế nhằm tạo thuận lợi cho việc xây dựng, chia sẻ, in ấn và lưu trữ văn bản Cũngnhư văn bản cố định, văn bản XPS được hiển thị bằng DocumentViewer

Hình ảnh

Trong WPF, hình ảnh được hiển thị nhờ control Image, ví dụ:

<Image Width="200"

Source="C:\Documents and Settings\All Users\Documents\My Pictures\Ava.jpg" />

Control Image có thể hiển thị hình ảnh lưu trữ dưới nhiều khuôn dạng khácnhau, bao gồm JPEG, BMP, TIFF, GIF và PNG Nó cũng có thể hiển thị hình ảnhdạng Windows Media Photo mới được sử dụng trong Windows Vista Bất kể ở khuôndạng nào, WPF sử dụng Windows Imaging Component (WIC) để tạo ra hình ảnh.Cùng với các codec dùng cho các khuôn dạng ảnh kể trên, WIC cũng cung cấp mộtnền tảng chung để bổ sung codec khác

Video và âm thanh

Khi tốc độ của các bộ xử lý và truyền thông mạng ngày một nâng cao, video trởthành một phần tương tác lớn của người dùng với phần mềm Người dùng cũng sửdụng nhiều thời gian để nghe nhạc và các dạng âm thanh khác trên máy tính Do đó,WPF cung cấp tính năng hỗ trợ cả hai dạng media này thông qua phần tửMediaElement Control này có thể chơi các định dạng video WMV, MPEG và AVI,

và nhiều định dạng âm thanh khác nhau Việc lập trình để chạy một đoạn video trởnên khá đơn giản, như trong ví dụ sau:

<MediaElement

Trang 23

Source="C:\Documents and Settings\All Users\Documents\

My Videos\Ruby.wmv" />

Đồ họa hai chiều

Trong 20 năm gần đây, việc tạo ra đồ họa hai chiều trên Windows dựa trênGraphics Device Interface (GDI) và phiên bản sau của nó GDI+ Các ứng dụngWindows Forms phải sử dụng chức năng này thông qua một namespace khác hoàntoàn, bởi bản thân Windows Forms không tích hợp đồ họa 2 chiều Đối với đồ họa 3chiều thì càng tồi hơn, Windows Forms phải dựa trên công nghệ hoàn toàn biệt lập làDirect3D Với WPF, vấn đề trở nên đơn giản hơn nhiều Cả đồ họa 2 chiều và 3 chiềuđều có thể được tạo ra trực tiếp trong XAML hoặc trong code sử dụng thư viện WPFtương ứng

Đối với đồ họa 2 chiều, WPF định ra nhóm control của các khuôn hình (shapes)

mà ứng dụng có thể sử dụng để tạo nên hình ảnh, gồm:

* Line: vẽ đường thẳng qua 2 điểm

* Elllipse: vẽ ellipse

* Rectangle: vẽ chữ nhật

* Polygon: vẽ đa giác

* Polyline: vẽ đa giác mở

* Path: vẽ hình theo một đường bất kỳ

Mỗi khuôn hình đều có các thuộc tính phong phú cho phép hiển thị với nhiềutính chất khác nhau: màu nền, màu biên… Một đặc điểm quan trọng trong WPF là: vìmọi thứ đều được xây dựng trên một nền chung, việc kết hợp các đặc tính và đốitượng khác nhau, chẳng hạn, lồng một ảnh vào một hình chữ nhật, trở nên đơn giản.Điểm thú vị nữa là các đối tượng hình học này còn có thể thu nhận các sự kiện từphía người dùng như một control, chẳng hạn sự kiện nhắp chuột

Ngoài ra, WPF cũng cung cấp một nhóm chức năng hình học khác, gọi làgeometries, để làm việc với đồ họa hai chiều, như LineGeometry, RectangleGeometry,EllipseGeometry, và PathGeometry Dạng hình học này có nhiều thuộc tính và chứcnăng tương tự như các khuôn hình đã nêu trên Điểm khác biệt quan trọng nhất là cácgeometries không được dùng để hiển thị, chúng được dùng chủ yếu để tính toán hìnhhọc, ví dụ như để định ra các vùng miền, theo dõi vị trí bấm chuột

Trang 24

Thêm vào đó, WPF cung cấp lớp Transform cho phép thực hiện các biến đổi hình họcnhư xoay, dịch chuyển, co giãn đối tượng đồ họa; hoặc cho phép thực hiện các hiệuứng hoạt họa theo thời gian thông qua các lớp Animation và Timing.

Đồ họa ba chiều

WPF hỗ trợ đồ họa 3 chiều bằng việc gói các lời gọi API của Direct3D, và dovậy, việc sử dụng chúng trở nên thống nhất và đơn giản hơn đáng kể Để hiển thị đồhọa ba chiều, ứng dụng WPF sử dụng control Viewport3D Để tạo ra các cảnh bachiều, lập trình viên mô tả một hay nhiều mô hình, sau đó, phân định cách thức các

mô hình này được chiếu sáng hay hiển thị Như thường lệ, điều này được thực hiệnbằng XAML, bằng code hay trộn cả hai Để mô tả mô hình, WPF cung cấp lớpGeometryModel3D để tạo ra hình dạng của mô hình Khi mô hình đã được định hình,diện mạo bên ngoài của nó có thể được điều khiển bằng việc phủ lên các vật liệu(material) Chẳng hạn, lớp SpecularMaterial cho phép tạo bóng trên bề mặt mô hình Bất kể được làm từ vật liệu gì, một mô hình có thể được chiếu sáng theo nhiềucách Lớp DirectionalLight cho phép ánh sáng tới từ một hướng xác định, trong khilớp AmbientLight tạo ra ánh sáng đồng đều trên mọi vật trong cảnh Cuối cùng, để

định ra cách nhìn cảnh, lập trình viên phải định ra một camera Ví dụ,

PerspectiveCamera cho phép phân định khoảng cách từ vị trí nhìn tới vật thể và kiểunhìn phối cảnh (tuân theo luật gần xa)

Xây dựng cảnh ba chiều trực tiếp bằng XAML hay mã trình đều không đơngiản Do đó, chỉ nên dùng ứng dụng WPF để hiển thị cảnh ba chiều, việc xây dựngcảnh nên được thực hiện bằng những công cụ đồ họa chuyên biệt

Móc nối dữ liệu

Phần lớn các ứng dụng được tạo ra đều cung cấp cho người dùng phương tiện đểxem và sửa đổi dữ liệu Trong các ứng dụng WPF, việc lưu trữ và truy xuất dữ liệu đãđược thực hiện bởi các công nghệ như Microsoft SQL Server và ADO.NET Sau khi

dữ liệu được truy xuất và tải vào các đối tượng quản lý dữ liệu trên ứng dụng, phầnviệc khó khăn của ứng dụng WPF mới bắt đầu Về cơ bản, có hai công việc phải thựchiện:

Trang 25

1 1) Sao chép dữ liệu từ các đối tượng quản lý dữ liệu vào các control trên giaodiện, qua đó, dữ liệu có thể được hiển thị hay sửa đổi

2 2) Đảm bảo rằng những thay đổi trên dữ liệu từ các control được cập nhật trởlại các đối tượng quản lý dữ liệu

Để đơn giản hóa quá trình phát triển ứng dụng, WPF cung cấp một cơ chế mócnối dữ liệu để thực hiện tự động những bước này Phần nhân của cơ chế móc nối dữliệu là lớp Binding mà nhiệm vụ của nó là liên kết control trên giao diện (đích) vớiđối tượng quản lý dữ liệu (nguồn) Mối quan hệ này được minh họa trong hình 4 dướiđây:

Hình 3.Quan hệ giữa đối tượng dữ liệu và đối tượng phụ thuộc.

Việc hỗ trợ móc nối dữ liệu được xây dựng ngay từ nhân của WPF Tất cả cácđối tượng đồ họa trong WPF đều kế thừa từ DependencyObject, chúng là các đốitượng phụ thuộc Chức năng mà lớp cơ sở này hỗ trợ cho phép thực hiện hiệu ứnghoạt họa, tạo kiểu mẫu (styling) và móc nối dữ liệu Các đối tượng này đều mang mộtthuộc tính đặc biệt gọi là DependencyProperty, thuộc tính phụ thuộc Phần lớn cácthuộc tính hay dùng như Text, Content, Width, Height, vân vân đều là các thuộc tínhphụ thuộc Tất cả các thuộc tính phụ thuộc đều có thể tạo hiệu ứng hoạt họa, tạo kiểu

Trang 26

.I.6 Công cụ phát triển WPF

WPF cung cấp rất nhiều tính năng cho những lập trình viên Tuy nhiên, một côngnghệ dù có hữu dụng đến đâu cũng cần một công cụ và môi trường tốt để phát huynhững lợi điểm của nó Đối với WPF, Microsoft cung cấp một công cụ chuyên dùngcho lập trình viên, và một công cụ khác phục vụ người thiết kế giao diện Phần dướiđây đề cập ngắn gọn về những công cụ này

Microsoft Visual Studio-Công cụ cho lập trình viên

Visual Studio là công cụ chủ đạo của Microsoft dành cho lập trình viên phầnmềm Microsoft cung cấp thành phần mở rộng cho Visual Studio 2005 cho phép lậptrình viên có thể tạo ra các ứng dụng WPF Phiên bản tiếp theo của Visual Studio(2008) có bổ sung thêm các tính năng phát triển ứng dụng WPF, trong đó bao gồmVisual Designer, môi trường thiết kế giao diện cho WPF Sử dụng công cụ này, lậptrình viên có thể tạo ra giao diện WPF một cách trực quan, trong khi sản sinh các đặc

tả XAML tương ứng một cách tự động

Microsoft Expression Design – Công cụ cho người thiết kế

Mục tiêu cơ bản của WPF là nâng cao vị thế của người thiết kế trong việc tạogiao diện người dùng Để đạt mục tiêu này, ngoài XAML là công nghệ cốt lõi,Microsoft cũng đưa ra một công cụ mới cho phép người thiết kế làm việc thuận tiện

hơn, đó là Microsoft Expression Design(Hình 5)

Hình 4 Giao diện của công cụ Microsoft Expression Design.

Microsoft Expression Design cung cấp những tính năng truyền thống của mộtcông cụ thiết kế, cho phép người dùng làm việc theo cách quen thuộc Ngoài ra, công

Trang 27

cụ này đặc biệt tập trung vào việc hỗ trợ tạo giao diện cho các ứng dụng WPF Tất cảcác tính năng WPF mô tả ở trên đều sẵn có trong môi trường thiết kế này, và cho phépngười dùng thiết kế một cách trực quan Kết quả thiết kế được biểu diễn dưới dạngfile XAML do công cụ này sinh ra, và sau đó có thể được nhập vào môi trường VisualStudio

.I.7 Ứng đụng đầu tiên với WPF

Phần này giúp các bạn làm quen với lập trình WPF thông qua một ví dụ kinhđiển: Hello World Ứng dụng chỉ bao gồm một nút bấm có nhãn ban đầu là HelloWorld Khi nhắp chuột vào nút, nút sẽ đổi tên thành “From Hanoi, Vietnam” Môitrường lập trình ở đây là bộ Visual Studio 2008 với NET Framework 3.5

Quy trình thực hiện như sau:

Tạo ứng dụng WPF

Ví dụ 1

Trang 28

Hình 5 Tạo một project HelloWorld

Ở đây, ta chú ý chọn Net Framework 3.5 sp1

Hình 6 Giao diện thiết kế ứng dụng

Tạo ứng dụng Hello world bằng XAML

WPF hỗ trợ trên nền tảng XAML nên ta có thể tạo đối tượng hoàn toàn bằngngôn ngữ XAML Lưu ý, với cùng project trên, muốn viết đặc tả bằng XAML tươngđương ta cần xóa bỏ phần mã trình C# cũ đi, vì C# và XAML không thể cùng sinh

Trang 29

một đối tượng Cách thực hiện: Mở file Window1.xaml tương ứng với file codeWindow1.xaml.cs ở trên Thêm đoạn mã đặc tả XAML tương đương sau:

< Window x:Class="HelloWorld.Window1"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Window1" Height="300" Width="300">

< Button Name="button" Margin="10">

Để tạo phương thức xử lý sự kiện Click cho button Code tự sinh ra như sau:

private void button_Click( object sender, RoutedEventArgs e)

{

}

Trong phương thức này, ta thêm vào dòng lệnh:

button.Content = "From Hanoi, Vietnam" ;

Nhấn F5 để biên dịch project và chạy kết quả

Trang 30

Trên cơ sở đó, xây dựng phần mền “ quản lý học sinh trường tiểu học Thị Trấn Chợ

Chùa”

.II LINQ

.II.1 Tổng quan về LINQ

Khi nền tảng Microsoft.NET cùng với những ngôn ngữ hỗ trợ nó như C# và

VB đã trưởng thành, người ta bắt đầu nhận thấy rằng một trong những lĩnh vực rắcrối nhất mà các nhà phát triển vẫn phải đối mặt là truy xuất dữ liệu từ các nguồn khácnhau Đặc biệt là việc truy xuất và xử lý database và XML thường cồng kềnh và phứctạp trong những tình huống tốt nhất, và trở nên nguồn phát sinh các vấn đề trong cáckịch bản xấu nhất

Các vấn đề với database nhiều vô kể Trước tiên phải kể đến việc chúng takhông thể tương tác bằng lập trình với cơ sở dữ liệu ở cấp độ tự nhiên (native) củangôn ngữ Điều này có nghĩa là các lỗi cú pháp thường không được phát hiện cho đếnkhi thực thi Các field trong database bị tham chiếu không đúng cũng không đượcphát hiện Đây có thể là một tai họa, đặc biệt khi nó xảy ra ngay trong lúc thực thi cácđoạn code quản lý lỗi Không gì đau đầu hơn là toàn bộ cơ chế quản lý lỗi sụp đổ chỉ

vì một một đoạn code sai cú pháp chưa bao giờ được kiểm tra Đôi khi điều này làkhông thể tránh khỏi vì những hành vi lỗi không thể dự đoán được Các đoạn codedatabase không được kiểm tra vào thời điểm biên dịch chắc chắn sẽ dẫn tới nhữngvấn đề này

Vấn đề thứ hai là rắc rối gây ra bởi những kiểu dữ liệu khác nhau được sử dụng trongmột miền dữ liệu cụ thể nào đó Chẳng hạn như các kiểu dữ liệu của database vàXML với các kiểu tự nhiên của ngôn ngữ dùng để viết chương trình Đặc biệt là ngày

và thời gian có thể là cả một thách đố

Trang 31

XML parsing, duyệt và xử lý là một công việc nhàm chán Thông thường, một mẩu

dữ liệu XML nhỏ là tất cả những gì bạn mong muốn, nhưng theo W3C DOM XMLAPI, một XMLDocument phải được tạo ra chỉ để thực hiện vài thao tác trên mẩuXML đó

Thay vì chỉ thêm vào các lớp và phương thức để giải quyết những thiếu sót trên mộtcách chắp vá Nhóm phát triển tại Microsoft đã quyết định tiến một bước xa hơn bằngviệc trừu tượng hóa nền tảng truy vấn dữ liệu khỏi những miền dữ liệu cụ thể này.Kết quả chính là LINQ LINQ là công nghệ của Microsoft để cung cấp một cơ chế hỗtrợ ở cấp độ ngôn ngữ cho việc truy vấn dữ liệu thuộc mọi kiểu Những kiểu này baogồm các mảng và tập hợp trong bộ nhớ, các văn bản XML và hơn nữa

.II.2 LINQ căn bản

LINQ chủ yếu là về truy vấn dữ liệu, dù đó là những câu truy vấn trả về mộttập hợp các đối tượng, một đối tượng, hay một tập con các field từ một đối tượng haytập hợp các đối tượng Trong LINQ, tập các đối tượng trả về này được gọi làsequence Hầu hết các LINQ sequence có kiểu IEnumerable<T>, trong đó T là kiểu

dữ liệu của đối tượng được chứa trong sequence Ví dụ, nếu bạn có 1 sequence các sốnguyên, chúng sẽ được lưu trong 1 biến thuộc kiểu IEnumerable<int> Rất nhiềuphương thức LINQ có kiểu trả về là IEnumerable<T>

Các thành phần của LinQ

Vì LINQ là một công nghệ rất mạnh và tiếm năng, bạn sẽ được thấy nhiều hệthống và sản phẩm trở nên tương thích với LINQ Hầu như bất cứ kho dữ liệu nàocũng là một ứng viên tốt cho việc hỗ trợ LINQ, bao gồm database, Microsoft ActiveDirectory, registry, hệ thống file… và chắc chắn danh sách này sẽ còn dài hơn nữa

· LINQ to Object: cho phép truy vấn các mảng và tập hợp trên bộ nhớ

· LINQ to XML: trước đây được gọi là XLinq, đơn giản hóa việc thao tác với XML

· LINQ to Dataset: truy xuất Dataset với các câu truy vấn LINQ

· LINQ to SQL: trước đây được gọi là DLinq, cung cấp một cách mới để truy xuấtdatabase

Trang 32

· LINQ to Entity: là một LINQ API khác để giao tiếp với cơ sở dữ liệu So với LINQ

to SQL, LINQ to Entity mang nhiều tham vọng hơn, mạnh mẽ hơn nhưng cũng phứctạp hơn Hiện tại, LINQ to Entity chưa hoàn thiện như LINQ to SQL

Những hỗ trợ của C# 3.0 cho LINQ

Để LINQ tích hợp chặt chẽ với C#, những cải tiến quan trọng đã được thêmvào trong ngôn ngữ Có thể nói những thay đổi chính trong C# 3.0 là để phục vụLINQ Sau đây là vài tính năng mới được bổ sung:

(param1, param2, …paramN) => expr

Khi việc tính toán phức tạp hơn, ta có thể sử dụng một khối câu lệnh:

(param1, param2, …paramN) =>

Trang 33

Từ khóa var, cách khởi tạo đối tượng và tập hợp mới, các kiểu nặc danh (anonymoustypes):

Ta hãy khảo sát câu lệnh sau:

var mySpouse = new { FirstName = "Vickey", LastName = "Rattz" };

Trong ví dụ trên, một biến có tên là mySpouse được khai báo với từ khóa var Nóđược gán 1 giá trị thuộc một kiểu nặc danh sử dụng tính năng khởi tạo đối tượng mớicủa C# 3.0

Nói một cách ngắn gọn, từ khóa var cho phép kiểu dữ liệu của một đối tượngđược suy ra dựa trên các kiểu dữ liệu được dùng để khởi tạo nó Kiểu nặc danh chophép các kiểu dữ liệu mới được tạo ra nhanh gọn Đúng với cái tên “nặc danh”, cáckiểu dữ liệu này đều không có tên Và kiểu nặc danh không thể được tạo ra nếu nhưkhông biết các biến thành viên của nó Điều này được giải quyết với tính năng khởitạo đối tượng mới

Từ dòng code trên, trình biên dịch sẽ tạo một kiểu nặc danh mới chứa haithành viên public kiểu string Thành viên thứ nhất tên là FirstName và thành viên thứhai tên là LastName

Các phương thức mở rộng (extension method):

Một phương thức mở rộng là một phương thức static thuộc 1 lớp static màbạn có thể gọi như thể nó là 1 phương thức instance của 1 lớp khác Ví dụ, bạn có thểtạo một phương thức mở rộng tên là ToDouble là một phương thức static trong mộtlớp static nào đó, rồi gọi nó trên một đối tượng thuộc kiểu string

Làm thế nào để khai báo một phương thức là extension method? Rất đơn giản,các phương thức có từ khóa this đặt tại tham số thứ nhất sẽ tự động trở thànhextension method Ví dụ, nếu tham số thứ nhất của một phương thức có kiểu là string

và được khai báo với từ khóa this, nó sẽ trở thành phương thức mở rộng của kiểustring và có thể được gọi trên bất kì đối tượng string nào

public static double ToDouble(this string s) {

Trang 34

Cách dễ nhất để tiếp cận LINQ là xem xét cách nó làm việc với các đối tượngtrong bộ nhớ Đây là LINQ to Objects – dạng đơn giản nhất của LINQ Nói một cách

cơ bản nhất, LINQ to Objects cho phép thay thế logic lặp (như một khối lệnh foreach)với một biểu thức LINQ mang tính khai báo Để ví dụ, hãy hình dung bạn muốn lấy

về danh sách các nhân viên có LastName bắt đầu bằng chữ ‘D’ Sử dụng code C#, bạn

có thể lặp qua toàn bộ tập hợp Employee, và thêm các nhân viên đạt điều kiện vàomột tập hợp thứ hai:

// Lấy về danh sách nhân viên đầy đủ

List<EmployeeDetails> employees = db.GetEmployees();

// Tìm những nhân viên có tên bắt đầu bằng chữ ‘D’.

List<EmployeeDetails> matches = new List<EmployeeDetails>();

foreach (EmployeeDetails employee in employees)

List<EmployeeDetails> employees = db.GetEmployees();

IEnumerable<EmployeeDetails> matches;

matches = from employee in employees

where employee.LastName.StartsWith("D")

select employee;

Câu truy vấn LINQ sử dụng một tập các từ khóa mới, bao gồm from, in, where

và select Nó trả về một tập hợp mới chỉ chứa các kết quả phù hợp Kết quả cuối cùngcủa cả hai đoạn code trên là như nhau

Lưu ý: các từ khóa LINQ thực sự là một phần của ngôn ngữ C#, điều này giúpphân biệt LINQ với các công nghệ khác như EmbeddedSQL, vốn buộc người dùngphải chuyển đổi giữa cú pháp C với cú pháp SQL trong một đoạn code

Biểu thức LINQ như ở trên có những nét tương đồng với một câu truy vấnSQL, dù thứ tự của các mệnh đề đã được sắp xếp lại Nói chung, tất cả các biểu thức

Trang 35

LINQ phải có một mệnh đề from chỉ ra nguồn dữ liệu và một mệnh đề select chỉ ra dữliệu cần được lấy về Mệnh đề from được đặt trước tiên:

matches = from employee in employees

;

Mệnh đề này xác định hai thông tin: từ đứng ngay sau từ khóa in xác địnhnguồn dữ liệu – trong trường hợp này là một tập hợp tên là emloyees Từ theo sau từkhóa from gán một tên giả (alias) cho từng phần tử trong tập hợp nguồn Tên giả này

có thể được sử dụng lại trong các phần sau của biểu thức, chẳng hạn như trong cácmệnh đề where và select Ngôn ngữ C# có nhiều toán tử LINQ khác không được đềcập chi tiết trong bài viết này

Dù ví dụ đơn giản trên có vẻ không có gì đặc biệt, nó có những thay đổi quantrọng so với các phương pháp tiếp cận truyền thống Đáng chú ý nhất là câu truy vấnnày được tích hợp trong ngôn ngữ, nghĩa là bạn sẽ có sự hỗ trợ ở cấp độ ngôn ngữ,bao gồm việc kiểm tra cú pháp và Intellisense Bạn sẽ cảm nhận được điều này rõràng hơn với LINQ to SQL, không còn những ngày mà bạn phải lo lắng với việc viếtmột câu truy vấn SQL trong một chuỗi để rồi không phát hiện được những lỗi cú phápcho đến khi thực thi Hoặc bạn mệt mỏi vì không thể nhớ được tên cột nào đó trongtable? Nay thì Intellisense đã làm tất cả những chuyện đó!

LinQ hoạt động như thế nào

Các bước sử dụng LINQ:

· Để sử dụng LINQ, bạn tạo một biểu thức LINQ

· Giá trị trả về từ một biểu thức LINQ là một đối tượng iterator hiện thựcIEnumerable<T>

· Khi bạn lặp qua đối tượng iterator, LINQ mới thực sự thực hiện công việc Cơ chếnày được gọi là Deferred Execution

Vậy LINQ thực thi các biểu thức như thế nào? Câu trả lời phụ thuộc vào loại

dữ liệu mà bạn truy vấn Ví dụ như LINQ to SQL chuyển các biểu thức LINQ thànhcác lệnh cơ sở dữ liệu, trong khi với LINQ to Objects, mọi chuyện đơn giản hơnnhiều Chẳng hạn như trong ví dụ trên, LINQ thực ra sử dụng một vòng lặp foreach

để quét qua tập hợp, Mặc dù điều này nghe có vẻ không ấn tượng, lợi ích của LINQnằm ở chỗ nó mang đến một cách linh động để định nghĩa các câu truy vấn có thể áp

Trang 36

dụng được cho nhiều nguồn dữ liệu khác nhau, bao gồm các tập hợp trên bộ nhớ,XML, Dataset…

.II.3 LinQ to Sql

LINQ to SQL là một phiên bản hiện thực hóa của O/RM (object relationalmapping) có bên trong NET Framework bản “Orcas” (nay là NET 3.5), nó cho phépbạn mô hình hóa một cơ sở dữ liệu dùng các lớp NET Sau đó bạn có thể truy vấn cơ

sở dữ liệu (CSDL) dùng LINQ, cũng như cập nhật/thêm/xóa dữ liệu từ đó

LINQ to SQL hỗ trợ đầy đủ transaction, view và các stored procedure (SP) Nócũng cung cấp một cách dễ dàng để thêm khả năng kiểm tra tính hợp lệ của dữ liệu vàcác quy tắc vào trong mô hình dữ liệu của bạn

Mô hình hóa cơ sở dữ liệu dùng LinQ to Sql

Visual Studio “Orcas” đã tích hợp thêm một trình thiết kế LINQ to SQL nhưmột công cụ dễ dàng cho việc mô hình hóa một cách trực quan các CSDL dùng LINQ

to SQL

Trang 37

Ví dụ 2

Hình 8 Mô hình cơ sở dữ liệu LinQ to Sql

Mô hình LINQ to SQL ở trên định nghĩa bốn lớp thực thể: Product, Category,Order và OrderDetail Các thuộc tính của mỗi lớp ánh xạ vào các cột của bảng tươngứng trong CSDL Mỗi instance của một lớp biểu diễn một dòng trong bảng dữ liệu Các mũi tên giữa bốn lớp thực thể trên biểu diễn quan hệ giữa các thực thểkhác nhau, chúng được tạo ra dựa trên các mối quan hệ primary-key/foreign-keytrong CSDL Hướng của mũi tên chỉ ra mối quan hệ là một – một hay một – nhiều.Các thuộc tính tương ứng sẽ được thêm vào các lớp thực thể trong các trường hợpnày Lấy ví dụ, lớp Category ở trên có một mối quan hệ một nhiều với lớp Product,điều này có nghĩa nó sẽ có một thuộc tính “Categories” là một tập hợp các đối tượngProduct trong Category này Lớp Product cũng sẽ có một thuộc tính “Category” chỉđến đối tượng ”Category” chứa Product này bên trong

Bảng các phương thức bên tay phải bên trong trình thiết kế LINQ to SQL ởtrên chứa một danh sách các SP để tương tác với mô hình dữ liệu của chúng ta Trong

ví dụ trên tôi đã thêm một thủ tục có tên “GetProductsByCategory” Nó nhận vào mộtcategoryID và trả về một chuỗi các Product Chúng ta sẽ xem bằng cách nào có thểgọi được thủ tục này trong một đoạn code bên dưới

Trang 38

Tìm hiểu lớp DataContext

Khi bạn bấm nút “Save” bên trong màn hình thiết kế LINQ to SQL, VisualStudio sẽ lưu các lớp NET biểu diễn các thực thể và quan hệ bên trong CSDL màchúng ta vừa mô hình hóa Cứ mỗi một file LINQ to SQL chúng ta thêm vào solution,một lớp DataContext sẽ được tạo ra, nó sẽ được dùng khi cần truy vấn hay cập nhậtlại các thay đổi Lớp DataContext được tạo sẽ có các thuộc tính để biểu diễn mốibảng được mô hình hóa từ CSDL, cũng như các phương thức cho mỗi SP mà chúng ta

đã thêm vào

Một khi đã mô hình hóa CSDL dùng trình thiết kế LINQ to SQL, chúng ta cóthể dễ dàng viết các đoạn lệnh để làm việc với nó Dưới đây là một vài ví dụ về cácthao tác chung khi xử lý dữ liệu:

-Lấy product từ cơ sở dữ liệu

Đoạn lệnh dưới đây dùng cú pháp LINQ để lấy về một tập IEnumerable các đối tượngProduct Các sản phẩm được lấy ra phải thuộc phân loại “Beverages”:

-Cập nhật một sản phẩm trong CSDL

Đoạn lệnh dưới đây cho thấy cách lấy một sản phẩm, cập nhật lại giá tiền và lưu lạiCSDL

C#:

Trang 39

- Chèn thêm một phân loại mới và hai sản phẩm vào CSDL

Đoạn mã dưới đây biểu diễn cách tạo một phân loại mới, và tạo hai sản phẩm mới vàđưa chúng vào trong phân loại đã tạo Cả ba sau đó sẽ được đưa vào cơ sở dữ liệu.Chú ý rằng tôi không cần phải tự quản lý các mối quan hệ primary key/foreign key,thay vào đó, tôi chỉ đơn giản thêm các đối tượng Product vào tập hợp Products củađối tượng category, và rồi thêm đối tượng category vào tập hợp Categories củaDataContext, LINQ to SQL sẽ biết cách thiết lập các giá trị primary key/foreign keymột cách thích hợp

- Xóa các sản phẩm

Đoạn mã sau sẽ biểu diễn cách xóa tất cả các sản phẩm Toy khỏi CSDL:

C#

Trang 40

- Gọi một thủ tục:

Đoạn mã dưới đây biểu diễn cách lấy các thực thể Product mà không dùng cú phápcủa LINQ, mà gọi đến thủ tục “GetProductsByCategory” chúng ta đã thêm vào trướcđây Nhớ rằng một khi đã lấy về kết quả, tôi có thể cập nhật/xóa và sau đó gọidb.SubmitChanges() để cập nhật các thay đổi trở lại CSDL

C#:

- Lấy các sản phẩm và phân trang

Đoạn mã dưới đây biểu diễn cách phân trang trên server như một phần của câu truyvấn LINQ Bằng cách dùng các toán tử Skip() và Take(), chúng ta sẽ chỉ trả về 10dòng từ CSDL – bắt đầu từ dòng 200

C#:

Ngày đăng: 25/05/2020, 15:18

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w