1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tìm hiểu về LinQ Entity Framework và áp dụng cho bài toán quản lý tạm trú, tạm vắng

77 445 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 77
Dung lượng 2,19 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 1. Thông tin chung Tên đề tài Tìm hiểu về LinQ Entity Framework và áp dụng cho bài toán quản lý tạm trú, tạm vắng Họ và tên sinh viên: Phạm Văn Tuân Điện thoại liên lạc: 01665532110 Email: mrtuan19932012gmail.com Lớp: Công nghệ phần mềm K56 Hệ đào tạo: Đại học chính quy Đề tài được thực hiện tại: Hà Nội 2. Mục tiêu của ĐATN Tìm hiểu về LinQ Entity Framework và áp dụng cho bài toán quản lý tạm trú, tạm vắng. 3. Các nhiệm vụ cụ thể của ĐATN Tìm hiểu về lập trình cơ sở dữ liệu Tìm hiểu về LinQ Entity Framework Phân tích và thiết kế hệ thống cho bài toán quản lý tạm trú, tạm vắng Sử dụng LinQ Entity Fr

Trang 1

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP

1 Thông tin chung

Tên đề tài

Tìm hiểu về LinQ EntityFramework và áp dụng cho bàitoán quản lý tạm trú, tạm vắng

Họ và tên sinh viên: Phạm Văn Tuân

Điện thoại liên lạc: 01665532110

Đề tài được thực hiện tại: Hà Nội

2 Mục tiêu của ĐATN

Tìm hiểu về LinQ Entity Framework và áp dụng cho bài toán quản lý tạm trú,tạm vắng

3 Các nhiệm vụ cụ thể của ĐATN

- Tìm hiểu về lập trình cơ sở dữ liệu

- Tìm hiểu về LinQ Entity Framework

- Phân tích và thiết kế hệ thống cho bài toán quản lý tạm trú, tạm vắng

- Sử dụng LinQ Entity Framework lập trình cơ sở dữ liệu cho bài toán quản lýtạm trú, tạm vắng

4 Lời cam đoan của sinh viên:

Tôi – Phạm Văn Tuân – cam kết đây là công trình nghiên cứu của bản thân tôidưới sự hướng dẫn của Th.S Nguyễn Thị Hữu Phương

Trang 2

Các kết quả nêu trong đề tài là trung thực, không phải là sao chép toàn văn củabất kỳ công trình nào khác.

Hà Nội, ngày tháng năm

Trang 3

TÓM TẮT NỘI DUNG ĐỀ TÀI

Nội dung đồ án tốt nghiệp bao gồm 4 chương:

Phần mở đầu : đặt vấn đề, mục tiêu của đồ án, nội dung của đồ án và phương phápthực hiện

Chương 1: Giới thiệu cho người đọc về lập trình cơ sở dữ liệu, các kỹ thuật lậptrình với CSDL, Ado.net, kỹ năng lập trình theo mô hình n lớp và làm việc với tậptin XML

Chương 2: Cơ sở lý thuyết về Lin Q và các thành phần của nó.Giới thiệu về EntityFramework, so sánh giữa Entity Framework với Lin Q to SQL

Chương 3: Ứng dụng của Lin Q vào việc lập trình cho bài toán quản lý tạm trú,tạm vắng

Chương 4: Cài đặt và thử nghiệm

Trang 4

LỜI CẢM ƠN

Em hoàn thành đồ án tốt nghiệp này tại Đại học Mỏ-Địa chất Hà Nội Với tất cả lòng chân thành, em xin gửi lời cám ơn sâu sắc đến Th.SNguyễn Thị Hữu Phương - người đã hướng dẫn chỉ bảo nhiệt tình và tạo mọi điềukiện thuận lợi để em học tập, nghiên cứu hoàn thành đồ án tốt nghiệp này

Với tất cả niềm trận trọng, em xin gửi lời cảm ơn đến các thầy cô giáotrong Bộ môn Công nghệ phần mềm cũng như các thầy cô trong Khoa Công nghệthông tin đã dạy dỗ, giáo dục em trưởng thành về mọi mặt trong 5 năm qua Cám

ơn các bạn bè trong và ngoài lớp về sự chia sẻ, những tình cảm trân thành tốt đẹp và

sự đồng hành của các bạn trong thời gian qua

Đặc biệt em xin bày tỏ tấm lòng biết ơn chân thánh nhất với bố mẹ và giađình đã luôn nuôi dưỡng và tạo điều kiện để em được học tập và trưởng thành

Em xin chân thành cảm ơn!!!

Trang 5

MỤC LỤC

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP I TÓM TẮT NỘI DUNG ĐỀ TÀI III LỜI CẢM ƠN IV MỤC LỤC V DANH MỤC CÁC HÌNH VẼ VII DANH MỤC CÁC BẢNG BIỂU VIII

MỞ ĐẦU 1

CHƯƠNG 1 TỔNG QUAN VỀ CÁC KỸ THUẬT LẬP TRÌNH 4

CƠ SỞ DỮ LIỆU 4

1.1 Khái niệm lập trình cơ sở dữ liệu 4

1.2 Nhu cầu lưu trữ dữ liệu của chương trình 4

1.3 Các kỹ thuật lập trình với cơ sở dữ liệu 5

1.4 ADO.NET 9

1.4.1 Mô hình kiến trúc của ADO.NET 9

1.4.2 Các đối tượng của ADO.NET 11

1.5 Kỹ năng lập trình theo mô hình N lớp 12

1.6 Làm việc với tập tin XML 15

1.6.1 Cấu trúc của 1 file XML 16

1.6.2 Định nghĩa các thành phần trong cấu trúc xml 17

CHƯƠNG 2 LẬP TRÌNH CƠ SỞ DỮ LIỆU VỚI LINQ ENTITY FRAMEWORK 20

2.1 LINQ (Language-Integrated Query) 20

2.1.1 LIN Q là gì 20

2.1.2 Các thành phần của LIN Q 21

2.2 Entity Framework 25

2.2.1 Entity Framework là gì? Các thành phần của Entity Framework 25

2.2.2 Làm việc với Entity framework 26

2.2.3 Tạo ứng dụng Entity framework sử dụng cơ sở dữ liệu có sẵn 28

Trang 6

2.2.4 So sánh giữa Entity Framework với LINQ to SQL 31

CHƯƠNG 3 LẬP TRÌNH BÀI TOÁN QUẢN LÝ TẠM TRÚ, TẠM VẮNG SỬ DỤNG LINQ 33

3.1 Mô tả bài toán 33

3.2 Các mô hình 36

3.2.1 Mô hình Use case 36

3.2.2 Mô hình class diagram 37

3.2.3 Mô hình Sequence diagram và Collaboration diagram 37

3.2.4 Mô hình activity diagram 47

3.3 Thiết kế các lớp của đối tượng 52

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

PHỤ LỤC 63

Trang 7

DANH MỤC CÁC HÌNH VẼ

Hình 1-1 Các phần tử thông dụng trong ODBC………8

Hình 1-2 Chuối kết nối đến cơ sở dữ liệu……….8

Hình 1-3 Chuỗi kết nối đến cơ sở dữ liệu……….8

Hình 1-4 Mở cơ sở dữ liệu………9

Hình 1-5 Mở cơ sở dữ liệu………

hình 0-1 cấu trúc của một file xml 17

hình 2-1 kiến trúc của linq 21

hình 2-2 kiến trúc datasets 23

hình 2-3 kiến trúc entity framwork 24

hình 2-4 các cách sử dụng entity framework 26

hình 2-5 cài ef power tool 27

hình 2-6 lựa chọn entity framework 27

hình 2-7 tạo lớp để kết nối với entity 28

hình 2-8 tạo lớp chứa các bảng 28

hình 2-9 kết nối sử dụng công cụ có sẵn 29

hình 2-10 chọn cơ sở dữ liệu cần kết nối 30

hình 2-11 chọn bảng 31

hình 3-1 mô hình usecase của bài toán 36

hình 3-2 mô hình lớp 37

hình 3-3 mô hình tuần tự của chức năng cấp giấy tạm vắng 38

hình 3-4 sơ đồ cộng tác 39

hình 3-5 sơ đồ tuần tự của cấp sổ hộ khẩu 40

hình 3-6 sơ đồ cộng tác 41

hình 3-7 sơ đồ tuần tự của cấp giấy tạm trú 42

hình 3-8 sơ đồ cộng tác 43

hình 3-9.sơ đồ tuần tự cấp giấy khai sinh 44

hình 3-10 sơ đồ công tác gks 45

hình 3-11 sơ đồ tuần tự cấp giấy khai tử 46

hình 3-12 sơ đồ cộng tác gkt 46

hình 3-13 sơ đồ tuần tự báo cáo 47

hình 3-14 sơ đồ cộng tác báo cáo 47

Trang 8

hình 3-15 sơ đồ hoạt động cấp sổ hộ khẩu 48

hình 3-16 sơ đồ hoạt động cấp giấy tạm trú 49

hình 3-17 sơ đồ hoạt động cấp giấy tạm vắng 50

hình 3-18 sơ đồ hoạt đông cấp giấy khai sinh 51

hình 3-19 sơ đồ hoạt động cấp giấy chứng tử 52

Yhình 4- 2 form main ……….56

hình 4-3.form nhân khẩu 56

hình 4-4 form cán bộ 57

hình 4-5.form chức vụ 57

hình 4-6.form sổ hộ khẩu 58

hình 4-7.form tạm trú 58

hình 4-8.form tạm vắng 59

hình 4-9.form sinh 59

hình 4-10.form tử 60

hình 4-11.form báo cáo 60

Trang 10

MỞ ĐẦU

1 Lý do lựa chọn đề tài

Hiện nay với sự phát triển mạnh mẽ của Internet cùng với sự phát triển mạnh mẽcủa công nghệ Nhiều ngôn ngữ mới được ra đời và nhiều ứng dụng đã được pháttriển trên nền tảng Entity Framework

Cơ sở dữ liệu được coi là linh hồn của hệ thống máy tính, cơ sở dữ liệu tốt sẽgiúp hệ thống hoạt động một cách hiệu quả hơn Chính vì thế, kỹ thuật lập trình với

cơ sở dữ liệu luôn gắn liền với bất cứ ngôn ngữ nào vừa ra đời Xử lý thông tin hay

dữ liệu là nhiệm vụ quan trọng nhất của bất kỳ phần mềm nào và một trong nhữngtrở ngại chính mà các nhà phát triển hiện nay phải đối mặt là khác biệt giữa ngônngữ lập trình hướng đối tượng và ngôn ngữ truy vấn dữ liệu, vấn đề càng phức tạphơn với sự xuất hiện của XML (eXtensible Markup Language - ngôn ngữ đánh dấu

mở rộng) Hiện tại, cách phổ biến nhất để ứng dụng lấy dữ liệu từ các hệ cơ sở dữliệu (CSDL) là sử dụng SQL (Structure Query Language - ngôn ngữ truy vấn cấutrúc) SQL có cú pháp rất khác với những ngôn ngữ lập trình phổ dụng như C# vàVB.NET, do vậy lập trình viên phải nhọc công "hàn gắn" hai thực thể khác biệt nàyvới nhau trong mỗi dự án phần mềm Một vấn đề khác với SQL là nó chỉ dùng đểtruy vấn dữ liệu trong các cơ sở dữ liệu dạng quan hệ Nếu muốn truy cập dữ liệuXML hay dạng khác (như trang HTML, email ), nhà phát triển lại phải sử dụng cúpháp truy vấn khác (XPath/XQuery) Để giảm gánh nặng thao tác trên nhiều ngônngữ khác nhau và cải thiện năng suất lập trình, Microsoft đã phát triển giải pháp tíchhợp dữ liệu cho NET Framework có tên gọi là LINQ (Language Integrated Query),đây là thư viện mở rộng cho các ngôn ngữ lập trình C# và Visual Basic.NET (có thể

mở rộng cho các ngôn ngữ khác) cung cấp khả năng truy vấn trực tiếp dữ liệu đốitượng, CSDL và XML Chính vì thế em đã lựa chọn đề tài “Tìm hiểu về LinQEntity Framwork và áp dụng cho bài toán quản lý tạm trú, tạm vắng” làm đề tài tốtnghiệp của mình

2 Tính cấp thiết, ý nghĩa khoa học và thực tiễn của đề tài

A, Tính cấp thiết của đề tài

Trang 11

Ngày nay, ngành công nghệ thông tin đang phát triển vô cùng mạnh mẽ Nó đãchứng tỏ được sức mạnh của mình trong mọi lĩnh vực của cuộc sống Tại Việt Nam,công nghệ thông tin đã và đang khẳng định vai trò, vị trí lớn của mình trong mọilĩnh vực kinh tế, xã hội Rất nhiều cơ quan công sở, xí nghiệp, trường học, bệnhviện đã đưa tin học vào ứng dụng Trong đó việc quản lý nhân khẩu là một ứngdụng cần thiết và mang lại nhiều lợi ích Nó giúp cho các cơ quan công sở tiết kiệmđược thời gian, tiền bạc, nhân công và có độ chính xác rất cao.

Tại các ủy ban phường - quận vấn đề quản lý tạm trú tạm vắng là một trongnhững vấn đề cần thiết và cấp bách Qua đó giúp quản lý nhân khẩu trong địa bànquận một cách chính xác nhất, qua đó cũng nắm ró được nhân khẩu, tình trạng tạmtrú, tạm vắng trong địa bàn xã

Xuất phát từ nhận thức trên, với mong muốn áp dụng công nghệ thông tin vàoquản lý, dựa trên những hoạt động thực tiễn em đã áp dụng công nghệ thông tinvào bài toán quản lý tạm trú, tạm vắng

B, Ý nghĩa khoa học và thực tiễn của đề tài

Với việc Entity Framework áp dụng vào bài toán quản lý tạm trú tạm vắng, cơ

sở dữ liệu sẽ được tích hợp ngay trên C# mà không cần dùng đến SQL severnữa.Khi đó ta có thể dùng cơ sở dữ liệu được mọi lúc mọi nơi

3 Nhiệm vụ của đề tài

 Tìm hiểu về lập trình cơ sở dữ liệu

 Tìm hiểu về LinQ Entity Framework

 Phân tích và thiết kế hệ thống cho bài toán quản lý tạm trú, tạm vắng

 Sử dụng LinQ Entity Framework lập trình cơ sở dữ liệu cho bài toán quản lýtạm trú, tạm vắng trong môi trường C#

4 Nội dung thực hiện của đề tài

 Tìm hiểu về lập trình cơ sở dữ liệu

 Tìm hiểu về LinQ Entity Framework

 Phân tích và thiết kế hệ thống cho bài toán quản lý tạm trú, tạm vắng

 Sử dụng LinQ Entity Framework lập trình cơ sở dữ liệu cho bài toán quản lýtạm trú, tạm vắng

Trang 12

5 Phương pháp nghiên cứu

- Phương pháp nghiên cứu lý thuyết: Nghiên cứu, tổng hợp lý thuyết về lập trình

cơ sở dữ liệu và LinQ Entity Framework

- Phương pháp lập trình: dựa trên lý thuyết tổng hợp được về lập trình cơ sở dữliệu và LinQ, thực hiện thao tác với cơ sở dữ liệu của bài toán tạm trú, tạm vắngvới SQL Server và lập trình trong môi trường của C# sử dụng LinQ để kết nối

Trang 13

CHƯƠNG 1 TỔNG QUAN VỀ CÁC KỸ THUẬT LẬP TRÌNH

CƠ SỞ DỮ LIỆU 1.1 Khái niệm lập trình cơ sở dữ liệu

Một cơ sở dữ liệu là một kho lưu trữ thông tin của một cơ sở dữ liệu để đảm bảotính toàn vẹn của dữ liệu và các dữ liệu truy cập nhanh chóng quản lý Một Hệthống rất phổ biến của một cơ sở dữ liệu là một hệ thống quản lý cơ sở dữ liệu quan

hệ (RDBM) Để sử dụng, các thông tin trong một cơ sở dữ liệu có thể được truy cậpbằng cách sử dụng Structured Query Language (SQL) là một ngôn ngữ cơ sở dữliệu phổ biến với hầu hết các cơ sở dữ liệu Tuy nhiên, SQL chỉ cung cấp các lệnh

để truy cập và thao tác dữ liệu trong cơ sở dữ liệu

Đối với bất kỳ ứng dụng phức tạp, có thường là một nhu cầu cho các điều kiện,phân nhánh, và vòng lặp Không ai trong số này là một phần của ngôn ngữ SQL Đểlấp đầy khoảng trống này, nhiều ngôn ngữ lập trình phổ biến cho phép tích hợp vớiSQL thông qua một thư viện thông thường như mở Cơ sở dữ liệu kết nối (ODBC),Object Linking và Embedding (OLE), và đôi khi với các giao diện lập trình ứngdụng hoặc thư viện cung cấp với các cơ sở dữ liệu

Ngoài ra, hầu hết các cơ sở dữ liệu bây giờ có một ngôn ngữ đơn giản của riêngmình mà cho phép điều khiển đơn giản cho các ứng dụng mà không cần toàn bộ sứcmạnh của ngôn ngữ chuẩn như C ++ và Pascal Những ngôn ngữ đơn giản được sửdụng để viết các thủ tục lưu trữ và được độc quyền cho mỗi cơ sở dữ liệu

1.2 Nhu cầu lưu trữ dữ liệu của chương trình

Các chức năng xử lý chính của một chương trình:

 Giao diện : Xử lý các chức năng giao tiếp với người dùng

 Xử lý: Thưc hiện các xử lý quy định kiểm tra

 Dữ liệu: Quản lý việc lưu trữ đọc ghi qua lại giữa CSDL và chương trìnhlàm việc

Các dạng file dữ liệu

 File văn bản: Cách này không an toàn vì nội dung có thể đọc và sửa lại được

từ các chương trình soạn thảo khác

 File nhị phân: Yêu cầu trước khi thực hiện lưu trữ phải mã hóa dữ liệu

Trang 14

Chú ý: việc lưu trữ này đều thực hiện thủ công trên các cấu trúc dữ liệu vàmảng dữ liệu nên không được tối ưu hóa

1.3 Các kỹ thuật lập trình với cơ sở dữ liệu

 Được chứa trong các file *DLL hoặc trong các thư mục hệ thống củaWindows

+ ODBC: do Microsoft xây dựng

 Server thông qua ODBC Driver Manager

 Là 1 công nghệ của windows cho phéo client kết nối với CSDL từ xa

 ODBC hỗ trợ người lập trình kết nối đến được nhiều loại CSDL khác nhau

 Mặc dù viết chương trình với ODBC rất khó nhưng bù lại tốc độ xử lý lạirất nhanh

Để kết nối đến CSDL

+ Thiết lập kết nối dùng đối tượng rdoConnection

Ta dùng đối tượng rdoConnection để thiết lập một kết nối đến server cơ sở

dữ liệu từ xa trong RDO Sau khi ta có một đối tượng rdoConnection hợp lệ, ứng

dụng có thể bắt đầu tương tác với cơ sở dữ liệu

Đối tượng rdoConnection tương tự đối với Database trong lập trình với DAO.

Nó cũng tương tự theo một nghĩa nào đó với đối tượng Connetion của ADO Dưới

Trang 15

đây là danh sách các phần tử thông dụng nhất trong chuỗi kết nối ODBC khi kết nốivới SQL Server.

Hình 1-1 Các phần tử thông dụng trong ODBCTuy nhiên, đây không phải toàn bộ các tham biến Và không nhất thiết phảidùng tất cả các tham biến này trong mọi trường hợp Cơ sở dữ liệu có thể sử dụngnhiều hoặc ít hơn Ví dụ, để nối đến cơ sở dữ liệu SQL Server Novelty, ta dùngchuỗi kết nối:

Hình 1-2 Chuối kết nối đến cơ sở dữ liệuHoặc cũng có thể kết nối đến CSDL mà không cần dùng DNS Ví dụ:

Hình 1-3 Chuỗi kết nối đến cơ sở dữ liệu

Trang 16

o Dùng phương thức EstablishConnection của đối tượng Cả hai phươngthức đều như nhau, chúng chỉ hoạt động hơi khác nhau một chút.

 Ra đời sau ODBC

 Chỉ cho kết nối với hệ quản trị cơ sở dữ liệu ACCESS nhằm tăng tốc độ xử lý

và lập trình đơn giản

 DAO cung cấp cho người lập trình các đối tượng để làm việc với cơ sở dữ liệu.+ Muốn kết nối đến cơ sở dữ liệu thì ta có thể dùng keyword set

- Đầu tiên ta mở một Database Object dựa vào tên đầy đủ của Access database

Hình 1-6 Chuỗi kết nối cơ sở dữ liệu

- Tiếp theo ta chỉ định một DAO Recordset lấy tự Method OpenRecordset của

database myDB

Trang 17

Hình 1-7 Lấy cơ sở dữ liệu

- Tiếp theo ta load form = hàm sau

Hình 1-8 Hàm loadform

- Cuối cùng ta load chúng lên textbox

Hình 1-9 Hàm load textbox+ ADO:

 Ra đời sau DAO được xây dựng dựa trên OLEDB

 Các đối tượng của ADO là những đối tượng độc lập có thể khai báo và sửdụng riêng rẽ

Trang 18

Cung cấp phương pháp lập trình CSDL đơn giản, che bới đi những thủ tụcphức tạp nhưng chương trình sẽ chạy chậm hơn

1.4 ADO.NET

Trong thực tế, có rất nhiều ứng dụng cần tương tác với cơ sở dữ liệu .NET Framework cung cấp một tập các đối tượng cho phép truy cập vào cơ sở dữ liệu, tập các đối tượng này được gọi chung là ADO.NET.

ADO.NET tương tự với ADO, điểm khác biệt chính ở chỗ ADO.NET là một kiến trúc dữ liệu rời rạc, không kết nối (Disconnected Data Architecture) Với

kiến trúc này, dữ liệu được nhận về từ cơ sở dữ liệu và được lưu trên vùng nhớcache của máy người dùng Người dùng có thể thao tác trên dữ liệu họ nhận về vàchỉ kết nối đến cơ sở dữ liệu khi họ cần thay đổi các dòng dữ liệu hay yêu cầu dữliệu mới

Việc kết nối không liên tục đến cơ sở dữ liệu đã đem lại nhiều thuận lợi, trong

đó điểm lợi nhất là việc giảm đi một lưu lượng lớn truy cập vào cơ sở dữ liệu cùngmột lúc, tiết kiệm đáng kể tài nguyên bộ nhớ Giảm thiểu đáng kể vấn đề hàng trămngàn kết nối cùng truy cập vào cơ sở dữ liệu cùng một lúc

ADO.NET kết nối vào cơ sở dữ liệu để lấy dữ liệu và kết nối trở lại để cập

nhật dữ liệu khi người dùng thay đổi chúng Hầu hết mọi ứng dụng đều sử dụng

nhiều thời gian cho việc đọc và hiển thị dữ liệu, vì thế ADO.NET đã cung cấp một

tập hợp con các đối tượng dữ liệu không kết nối cho các ứng dụng để người dùng cóthể đọc và hiển thị chúng mà không cần kết nối vào cơ sở dữ liệu

Các đối tượng ngắt kết nối này làm việc tương tự đối với các ứng dụng Web.Như bạn có thể biết rằng, có rất nhiều loại database hiện nay như MicrosoftSQL Server, Microsoft Access, Oracle, Borland Interbase, và IBM DB2, …

1.4.1 Mô hình kiến trúc của ADO.NET

ADO.NET được chia ra làm hai phần chính rõ rệt, được thể hiện qua hình

Trang 19

Hình 1-10 Kiến trúc ADO.NET

DataSet là thành phần chính cho đặc trưng kết nối không liên tục của kiến trúc

ADO.NET DataSet được thiết kế để có thể thích ứng với bất kỳ nguồn dữ liệu nào.DataSet chứa một hay nhiều đối tượng DataTable mà nó được tạo từ tập các dòng

và cột dữ liệu, cùng với khoá chính, khóa ngoại, ràng buộc và các thông tin liên

quan đến đối tượng DataTable này Bản thân DataSet được dạng như một tập tin

dữ liệu, Command cung cấp một thao tác đến cơ sở dữ liệu, DataReader cho phép

chỉ đọc dữ liệu và DataAdapter là cấu nối trung gian giữa DataSet và nguồn dữ

liệu

Có thể nói mô hình đối tượng của ADO.NET khá uyển chuyển, các đối tượngcủa nó được tạo ra dựa trên quan điểm đơn giản và dễ dùng Đối tượng quan trọngnhất trong mô hình ADO.NET chính là Dataset Dataset có thể được xem như là thểhiện của cả một cơ sở dữ liệu con, lưu trữ trên vùng nhớ cache của máy người dùng

mà không kết nối đến cơ sở dữ liệu

Trang 20

Hình 1-11 Mô hình đối tượng của Dataset

DataSet bao gồm một tập các đối tượng DataRelation cũng như tập các đối tượng DataTable Các đối tượng này đóng vai trò như các thuộc tính của DataSet.

1.4.2 Các đối tượng của ADO.NET

A SqlConnection

Để tương tác với database, người dùng phải có một kết nối tới nó Kết nối giúpxác định database server, database name, user name, password, và các tham số cầnthiết để kết nối tới database Một đối tượng connection được dùng bởi đối tượngcommand vì thế chúng sẽ biết database nào để thực thi lệnh

Trang 21

C SqlDataReader

Nhiều thao tác dữ liệu đòi hỏi người dùng chỉ lấy một luồng dữ liệu để đọc.Đối tượng data reader cho phép lấy được kết quả của một câu lệnh SELECT từ mộtđối tượng command Để tăng hiệu suất, dữ liệu trả về từ một data reader là mộtluồng dữ liệu fast forward-only Có nghĩa là chỉ có thể lấy dữ liệu từ luồng theo mộtthứ tự nhất định Mặc dù điều này có lợi về mặt tốc độ, nhưng nếu cần phải thao tác

dữ liệu, thì một DataSet sẽ là một đối tượng tốt hơn để làm việc

D DataSet

Đối tượng DataSet là một thể hiện của dữ liệu trong bộ nhớ Chúng chứanhiều đối tượng DataTable, bên trong DataTable lại có nhiều hàng và cột, giốngnhư các database table thông thường Thậm chí có thể định nghĩa dữ liệu giữa cáctable để tạo các quan hệ parent-child DataSet được thiết kế đặc biệt để giúp quản lý

dữ liệu trong bộ nhớ và để hỗ trợ các thao tác không cần kết nối (disconnected) trên

dữ liệu DataSet là một đối tượng được dùng bởi tất cả Data Provider, đó là lý do tạisao nó không có một Data Provider prefix trong tên gọi

E SqlDataAdapter

Đôi lúc dữ liệu làm việc là read-only và ít khi cần thay đổi dữ liệu nguồn Vàitrường hợp cần lưu trữ tạm dữ liệu trong bộ nhớ để hạn chế truy xuất đến database.Data adapter làm điều này dễ dàng bằng cách giúp quản lý dữ liệu trong chế độ ngắtkết nối Data adapter sẽ đổ vào DataSet khi đọc dữ liệu và thực hiện thay đổi dữ liệumột lượt vào database

Data adapter chứa một tham chiếu đến đối tượng connection và mở/đóng kếtnối tự động khi đọc và ghi dữ liệu vào database Hơn nữa, data adapter chứa đốitượng command cho những thao tác SELECT, INSERT, UPDATE và DELETEtrên dữ liệu Người dùng sẽ có một data adapter được định nghĩa cho mỗi tabletrong một DataSet và nó sẽ quản lý các giao tiếp với cơ sở dữ liệu

1.5 Kỹ năng lập trình theo mô hình N lớp

Trong phát triển ứng dụng, để dễ quản lý các thành phần của hệ thống, cũngnhư không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành phần có

Trang 22

cùng chức năng lại với nhau và phân chia trách nhiệm cho từng nhóm để công việckhông bị chồng chéo và ảnh hưởng lẫn nhau

Ví dụ trong một công ty có từng phòng ban, mỗi phòng ban sẽ chịu tráchnhiệm một công việc cụ thể nào đó, phòng này không được can thiệp vào công việcnội bộ của phòng kia như Phòng tài chính thì chỉ phát lương Trong phát triển phầnmềm, người ta cũng áp dụng cách phân chia chức năng này Kiến trúc đa tầng/nhiềulớp, mỗi lớp sẽ thực hiện một chức năng nào đó, trong đó mô hình 3 lớp là phổ biếnnhất Ba lớp bao gồm Presentation, Business Logic, và Data Access Các lớp này sẽgiao tiếp với nhau thông qua các dịch vụ (services) mà mỗi lớp cung cấp để tạo nênứng dụng, lớp này cũng không cần biết bên trong lớp kia làm gì mà chỉ cần biết lớpkia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi

Mô hình 3 lớp mà Microsoft đề nghị dùng cho các hệ thống phát triển trên nền.NET như sau:

chính là User Interface Components và User InterfaceProcessComponents

Hình 1-12 Kiến trúc mô hình 3 lớp

Trang 23

UI Components là những phần tử chịu trách nhiệm thu thập và hiển thị thông

tin cho người dùng cuối Trong ASP.NET thì những thành phần này có thể là cácTextBox, các Button, DataGrid …

UI Process Components: là thành phần chịu trách nhiệm quản lý các qui trình

chuyển đổi giữa các UI Components Ví dụ chịu trách nhiệm quản lý các màn hìnhnhập dữ liệu trong một loạt các thao tác định trước như các bước trong một Wizard

… Lớp này không nên sử dụng trực tiếp các dịch vụ của lớp Data Access mà nên

sử dụng thông qua các dịch vụ của lớp Business Logic vì khi bạn sử dụng trực tiếpnhư vậy, bạn có thể bỏ qua các ràng buộc, các logic nghiệp vụ mà ứng dụng cầnphải có

b Business Logic Layer

Lớp này thực hiện các nghiệp vụ chính của hệ thống, sử dụng các dịch vụ do

lớp Data Access cung cấp, và cung cấp các dịch vụ cho lớp Presentation Lớp này

cũng có thể sử dụng các dịch vụ của các nhà cung cấp thứ 3 (3rd parties) để thựchiện công việc của mình (ví dụ như sử dụng dịch vụ của các cổng thanh tóan trựctuyến như Verisign, Paypal

Trong lớp này có các thành phần chính là Business Components, Business Entities và Service Interface.

Service Interface là giao diện lập trình mà lớp này cung cấp cho lớp Presentation sử dụng Lớp Presentation chỉ cần biết các dịch vụ thông qua giao

diện này mà không cần phải quan tâm đến bên trong lớp này được hiện thực như thếnào

Business Entities là những thực thể mô tả những đối tượng thông tin mà hệ

thống xử lý Trong ứng dụng chúng ta các đối tượng này là các chuyên mục(Category) và bản tin (News) Các business entities này cũng được dùng để trao đổi

thông tin giữa lớp Presentation và lớp Data Access.

Business Components là những thành phần chính thực hiện các dịch vụ mà

Service Interface cung cấp, chịu trách nhiệm kiểm tra các ràng buộclogic(constraints), các qui tắc nghiệp vụ(business rules), sử dụng các dịch vụ bênngoài khác để thực hiện các yêu cầu của ứng dụng

Trang 24

c Data Access Layer

Lớp này thực hiện các nghiệp vụ liên quan đến lưu trữ và truy xuất dữ liệucủa ứng dụng Thường lớp này sẽ sử dụng các dịch vụ của các hệ quản trị cơ sở dữliệu như SQL Server, Oracle,… để thực hiện nhiệm vụ của mình Trong lớp này cócác thành phần chính là Data Access Logic, Data Sources, Servive Agents)

Data Access Logic components (DALC) là thành phần chính chịu trách

nhiệm lưu trữ vào và truy xuất dữ liệu từ các nguồn dữ liệu – Data Sources nhưRDMBS, XML, File systems … Trong NET các DALC này thường được hiệnthực bằng cách sử dụng thư viện ADO.NET để giao tiếp với các hệ cơ sở dữ liệuhoặc sử dụng các O/R Mapping Frameworks (Object Raletional) để thực hiện việcánh xạ các đối tượng trong bộ nhớ thành dữ liệu lưu trữ trong CSDL

Service Agents là những thành phần trợ giúp việc truy xuất các dịch vụ bên

ngòai một cách dễ dàng và đơn giản như truy xuất các dịch vụ nội tại

1.6 Làm việc với tập tin XML

XML (viết tắt từ tiếng Anh eXtensible Markup Language, "Ngôn ngữ Đánh

dấu Mở rộng") là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị, để tạo

ra các ngôn ngữ đánh dấu khác Đây là một tập con đơn giản của SGML, có khảnăng mô tả nhiều loại dữ liệu khác nhau Mục đích chính của XML là đơn giản hóaviệc chia sẻ dữ liệu giữa các hệ thống khác nhau, đặc biệt là các hệ thống được kếtnối với Internet

Từ những buổi đầu sử dụng ngôn ngữ đánh dấu cho đến ngày nay, một trongnhững lợi thế của việc đánh dấu nội dung bằng thẻ là nếu hệ thống máy tính bị hỏng

thì dữ liệu in ra vẫn có thể được hiểu thông qua các thẻ của chính nó.

Ngôn ngữ đánh dấu được phát triển từ rất sớm, các công ty tư nhân và chínhphủ đã thiết lập các chuẩn cho ngôn ngữ đánh dấu như: Ngôn ngữ đánh dấu chuẩntổng quát (Standard Generalized Markup Language - SGML), Ngôn ngữ đánh dấusiêu văn bản (Hypertext Markup Language - HTML), và cuối cùng là XML SGML

có vẻ hơi phức tạp trong khi đó HTML không đủ sức mạnh để nhận dạng tất cả cácthông tin XML được tạo ra như là một ngôn ngữ đánh dấu dễ sử dụng và dễ mởrộng

Trang 25

1.6.1 Cấu trúc của một file XML

Gồm 2 phần :

Document prolog: Chứa đựng các thông tin tổng quan về tài liệu –

metadata và bao dồm 02 phần

 Khai báo : XML Declaration

 Phần bổ trợ cung cấp thông tin về tài liệu XML (miscellaneous)bao gồm Document Type Declaration, comments, processinginstructions, whitespace, …

nhưng khuyến cáo của W3C nên luôn có dòng XML

Declaration

Root Element: đây là tag lớn duy nhất của tài liệu chứa tất cả tag con bên

trong và nội dung của tài liệu XML

Hình 0-1 Cấu trúc của một file XML

1.6.2 Định nghĩa các thành phần trong cấu trúc xml

a Tài liệu XML nên bắt đầu với XML declaration ở dòng đầu tiên

 Cú pháp khai báo

<?xml version=”” encoding=”” standalone=”” ?>

 Thuộc tính version trong cú pháp xml trên thể hiện các thành phần XMLđược viết phải tuân theo qui định trong version Thuộc tính này bắt buộc

Trang 26

phải sử dụng khi có khai báo xml ở trên Hiện tại có 2 version của XML,đầu tiên (XML 1.0) được định nghĩa đầu tiên vào năm 1998, kể từ đó nótrải qua nhiều lần sửa đổi nhỏ nhưng vẫn giữ nguyên version tên là 1.0 vàđến 2008 thì đã là phiên bản thứ 5 của XML 1.0, nó được dùng rộng rãi vàluôn được khuyên là nên sử dụng Phiên bản thứ 2 là XML 1.1 được công

bố ngày 4/2/2004, bản thứ 2 của XML 1.1 được công bố ngày 16/8/2006,những thay đổi chính của bản 1.1 là cho phép có khả năng sử dụng các ký

tự kết thúc dòng dựa trên nền tảng EBCDIC và Unicode 3.2 nhưng nókhông được dùng rộng rãi, và chỉ dùng khi ta muốn sử dụng các tính năngkhác biệt đó

 Thuộc tính encoding thể hiện nội dung chuyển đổi ký tự trong tài liệu xml

để parser chuyển đổi nội dung văn bản đúng định dạng chữ để chuyển đếnclient Thuộc tính này là có hay không có cũng được Khi không có mặcđịnh là UTF-8

 Thuộc tính standalone thông báo cho parser biết là tài liệu có tham chiếuhay không tham chiếu đến các entity được định nghĩa ở bên ngoài tài liệuhay mặc định được khai báo bởi parser

1 Giá trị yes : tài liệu không tham chiếu đến các external entity

2 Giá trị no: giá trị mặc định nếu thuộc tính encoding không được khai báo để thể hiện tài liệu sẽ tham chiếu đến external entity

d Processing Instructions

 Các lệnh thực thi được yêu cầu đến bộ parser

 Cú pháp: bắt đầu với <? Và kết thúc với ?> nhưng không phải là <?xml ?>

Trang 27

 Được xuất hiện bất kỳ trong đâu ngoại trừ trước XML declaration, không được nằm trong phần tên tag.

 Không được phép có ký tự “–” ở giữa comment

f Marked-up tag

 Được dùng trong phần thân của tài liệu

 Bao gồm tag bắt đầu, tag kết thúc, tag cho thân rỗng, tham chiếu đếncác entity, tham chiếu đến các ký tự, comments, …

 Là tất cả các chữ và ký tự không nằm trong các tag markup Hay là ký

tự bất kỳ trong văn bản nằm trong thân tag hay bất kỳ đâu ngoài tag

 Có thể kết hợp với các whitespace

 Được parsing bởi parser (PCDATA) và có thể không được parse bởiparser và để nguyên giá trị để gửi tới ứng dụng (CDATA)

 Cú pháp để chữ không được parse <![CDATA[…]]>

chính xác giữa các dấu hiệu, nghĩa là không được có thêm bất kỳ khoảngtrắng nào cả

Trang 28

CHƯƠNG 2 LẬP TRÌNH CƠ SỞ DỮ LIỆU VỚI LINQ ENTITY

FRAMEWORK 2.1 LINQ (Language-Integrated Query )

Việc xử lý thông tin và các thao tác trên dữ liệu là 1 nhiệm vụ hết sức quantrọng, bởi lẽ cơ sở dữ liệu có thể nói là lõi của tất cả các ứng dụng, và một mộttrong những trở ngại chính mà các nhà phát triển luôn đối mặt đó là sự khác biệcgiữa ngôn ngữ lập trình hướng đối tượng và ngôn ngữ truy vấn dữ liệu, càng phứctạp hơn nếu cơ sở dữ liệu là XML …

Hiện nay có thể có một số công nghệ hổ trợ việc truy vấn dữ liệu nhưng việc

sử dụng hết sức rờm rà, phải qua nhiều thao tác để trả về một kết quả, và bản chất làphải truyền vào những câu lệnh SQL, điều này làm cho thời gian phát triển ứngdụng kéo dài bởi lẽ người lập trình phải tốn thêm khá nhiều thời gian để tiếp cậncách sử dụng, hơn nữa việc xử lý nếu không hay sẽ dể gây chết ứng dụng Mặckhác, khi các công nghệ này trả về một kết quả sẽ là một DataTable hay DataSet màkhông phải là một đối tượng hay một danh sách đối tượng, điều đó sẽ gây khó khăntrong việc quản lý Nhìn thấy được không chỉ là những vấn đề trên mà còn nhiềuvấn đề khác, Microsoft đã cho ra đời công nghệ LINQ, nhằm giải quyết những vấn

đề khó khăn trên dữ liệu mà chúng ta đã và đang gặp phải

2.1.1 LIN Q là gì

Để giảm gánh nặng thao tác trên nhiều ngôn ngữ khác nhau và cải thiện năngsuất lập trình, Microsoft đã phát triển giải pháp tích hợp dữ liệu cho .NETFramework có tên gọi là LINQ (Language Integrated Query), đây là thư viện mởrộng cho các ngôn ngữ lập trình C# và Visual Basic.NET (có thể mở rộng cho cácngôn ngữ khác) cung cấp khả năng truy vấn trực tiếp dữ liệu Object, cơ sở dữ liệu

và XML Thư viện này cung cấp khả năng truy vấn database ngay trên ngôn ngữ lậptrình Khi sử dụng, LinQ sẽ mô phỏng lại cơ sở dữ liệu của bạn và lưu trong trươngtrình, sau đó mỗi entity sẽ đươc xây dựng thành mỗi class như mô hình MVC, từ đó

ta có thể truy xuất database thông qua những lớp đó

Điểm mạnh của LINQ là “viết truy vấn cho rất nhiều các đối tượng dữ liệu”

Từ cơ sở dữ liệu, XML, Data Object … thậm chí là viết truy vấn cho một biến

Trang 29

mảng đã tạo ra trước đó Vì thế ta có các khái niệm như là LinQ to SQL, LinQ toXML,….

sử dụng đơn giản nhất của LINQ khi làm việc với dữ liệu

LINQ to SQL

LINQ to SQL là một phiên bản hiện thực hóa của O/RM (object relational

mapping) có bên trong NET Framework 3.5, nó cho phép mô hình hóa một cơ sở

dữ liệu dùng các lớp NET Sau đó có thể truy vấn cơ sở dữ liệu dùng LINQ, cũngnhư 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

Trang 30

LINQ to XML

Sử dụng LINQ với mục đích truy vấn file XML và tiện lợi truy vấn hơn nhiều

so với việc dùng XmlDocument, Xpath và Xquery như trước kia

LINQ to Datasets

Giới thiệu về Datasets

DataSet trong ADO.NET là một bước phát triển lớn trong việc phát triển ứngdụng cơ sở dữ liệu đa hệ Khi lấy và chỉnh sửa dữ liệu, duy trì liên tục kết nối tớiData Source trong khi chờ user yêu cầu thì rõ ràng là tốn tài nguyên máy rất nhiều.DataSet giúp ích ở đây rất lớn Vì DataSet cho phép lưu trữ dữ liệu và chỉnh sửa tại

‘local cache’, hay gọi là offline mode Có thể xem xét và xử lý thông tin trong khingắt kết nối Sau khi chỉnh sửa và xem xong thì tạo một kết nối và update dữ liệu từlocal vào Data Source

Dữ liệu trong DataSet được lưu trữ dưới dạng một Collection các Tables vàcần phải xử lý thông qua các lớp DataTable (DataRow và DataColumn)

Trang 31

Hình 2-3 Kiến trúc datasetsLINQ to DataSet cho phép người lập trình sử dụng DataSets như một nguồn

dữ liệu bình thường bằng các cú pháp truy vấn căn bản của LINQ

Trang 32

Hình 2-4 Kiến trúc Entity FramworkLINQ to Entities cho phép chúng ta có thể truy vấn các thực thể bên trongEntity Framework.

Các Operator chuẩn trong LINQ

Trang 33

2.2.1 Entity Framework là gì? Các thành phần của Entity Framework

Microsoft đã đưa ra định nghĩa của Entity Framework như sau: MicrosoftADO.NET Entity Framework là một Object / Relational Mapping (ORM)framework cho phép các nhà phát triển dể dàng làm việc với dữ liệu quan hệ như làcác đối tượng domain - specific, loại bỏ đi sự khó khăn trong việc truy cập dữ liệutrước đây Bằng cách sử dụng Entity Framework, truy vấn LINQ, thì việc lấy vàthao tác dữ liệu như các đối tượng trở nên mạnh mẽ hơn Entity Framework ORMcung cấp các dịch vụ như change tracking, idenity resolution, lazay loading, và truyvấn dữ liệu tập trung vào business logic của ứng dụng

Trang 34

Entity Framework là một bộ ánh xạ đối tượng – quan hệ cho phép người lậptrình NET làm việc với dữ liệu quan hệ qua các đối tượng (object) nó giúp lậptrình viên không cần viết mã cho (hầu hết) những gì liên quan đến truy cập dữ liệu Các thành phần trong Entity Framework:

 Code là mã lệnh tạo thành các lớp đối tượng dữ liệu cho phép thao tácvới dữ liệu

 Model là sơ đồ gồm các hộp mô tả các thực thể và các đường nối kết

Database first: là phương pháp chỉ nên dùng khi ta đã có sẵn cơ sở dữ

liệu (không phải tạo), EF Wizard sẽ tạo Model và Code cho ta

Models first: nên dùng khi ta bắt đầu thiết kế cơ sở dữ liệu từ đầu (từ

chưa có gì) Ta sẽ thiết kế mô hình cơ sở dữ liệu (Model) EF sẽ tự tạocode cho ta, sau đó nhờ EF Wizard tạo cơ sở dữ liệu

Code first: nên dùng khi đã có mô hình cơ sở dữ liệu, ta sẽ chỉ viết

code từ đó tạo Database

Trang 35

Dù cách nào thì cuối cùng cũng phải có Code để thao tác trong mã lệnh vàDatabase để lưu trữ dữ liệu Model chỉ là một thành phần trung gian.

Theo kinh nghiệm của nhiều lập trình viên đi trước, Code First là phương ánmềm dẻo nhất Trước đây khi lập trình cơ sở dữ liệu trong VB, VC,… ta luôn tạoCSDL liệu trước, sau đó mới xây dựng mã lệnh truy cập dữ liệu

2.2.2 Làm việc với Entity framework

Để làm việc với Entity Framework một cách hoàn chỉnh chúng ta phải cài thêmEntity Framework bản mới nhất từ NuGet:

B1 Tạo Project mới

B2 Cài EF Power Tools vào Visual Studio: Tools -> Library PaskageManager -> Manage NuGet Packages for Solution…

Hình 2-6 Cài EF Power Tool

Trang 36

Hình 2-7 Lựa chọn Entity FrameworkBên trái, chọn Online Nhập Entity Framework Power Tools vào khungSearch (góc trên, bên phải) chọn Entity Framework Power Tools -> Install

Khi đã cài được, chọn chuột phải trên tên Project sẽ thấy có menu EntityFramework

2.2.3 Tạo ứng dụng Entity framework sử dụng cơ sở dữ liệu có sẵn

Code First tức là bạn phải code sau đó sinh Database từ code đó NhưngDatabase tạo ra như thế sẽ ít thuộc tính: ràng buộc, identity, unique Giải pháp làtạo một database hoàn chỉnh trên SQL sau đó viết code để kết nối cơ sở dữ liệu vớiEntity

Trước hết tạo ra các class mô tả các bảng trong cơ sở dữ liệu, nó bao gồm cáctrường và thuộc tính, kiểu của chúng

Trang 37

Hình 2-8 Tạo lớp để kết nối với EntitySau đó tạo 1 class Context - là class quản lý tất cả các bảng và giao tiếp với

Entity, nó tương tự như class DataContext trong LINQ to SQL

Hình 2-9 Tạo lớp chứa các bảngTrong App.config ta thiết đặt ConnectionString để class Conext liên kết với

Trang 38

Để làm việc này có thể cài thêm 1 tool của Visual Studio giúp ta tạo CodeFirst từ Database một cách nhanh chóng, chính xác.

Thêm 1 Entity Model, chọn "Code First from Database"

Hình 2-10 Kết nối sử dụng công cụ có sẵnChọn Database có sẵn

Ngày đăng: 26/07/2017, 07:03

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w