Hình 1.1.5: Ánh xạ các table trong cửa sổ thiết kế LINQ to SQL Các Table, View từ CSDL được ánh xạ thành các Class được gọi là các lớp thực thể Entity Class, và mỗi một cột trong bảng sẽ
Trang 1005.5 TRƯỜNG ĐẠI HỌC VINH
KHOA CÔNG NGHỆ THÔNG TIN
=== ===
ĐỒ ÁN TỐT NGHIỆP NGÀNH: CÔNG NGHỆ THÔNG TIN
Đề tài:
TÌM HIỂU CÔNG NGHỆ LINQ TO SQL
VÀ XÂY DỰNG WEBSITE BỘ MÔN KỸ THUẬT MÁY TÍNH
Giáo viên hướng dẫn : TS HOÀNG HỮU VIỆT Sinh viên thực hiện : ĐẶNG THỊ NHƯỜNG Lớp : 51K1 - CNTT
VINH - 9/2014
Trang 2Em cũng xin được gửi lời cảm ơn sâu sắc đến thầy giáo TS Hoàng Hữu Việt Thầy đã tận tình chỉ bảo, có những buổi thảo luận giúp em hoàn thành bài đồ án của mình Tấm lòng của thầy, em xin ghi nhận
Con xin tri ân cha mẹ, là những người đã trực tiếp dạy dỗ và hướng dẫn con nên người, đã đồng hành cùng con trong suốt quãng đường đại học, để con được như ngày hôm nay Con xin cúi đầu tri ân
Một lần nữa, xin được gửi lời cảm ơn đến tất cả mọi người
Sinh viên
Đặng Thị Nhường
Trang 3LỜI NÓI ĐẦU
Với sự phát triển nhảy vọt của công nghệ thông tin hiện nay, Internet ngày càng giữ vai trò quan trọng trong các lĩnh vực khoa học, kĩ thuật và đời sống, đặc biệt trong lĩnh vực giáo dục Nhưng, hầu hết các bộ môn ở các trường đại học đều chưa có một trang web riêng cho bộ môn mình nên việc thông báo tin tức, giới thiệu tài liệu học tập cho sinh viên còn thủ công, tốn thời gian và tiền của Vì vậy, việc thiết kế website riêng cho bộ môn là điều cần thiết và hữu ích
Xuất phát từ yêu cầu thực tế đó, lại nhận thấy, hầu hết các sinh viên thuộc chuyên ngành Kỹ thuật máy tính đều có máy tính cá nhân nên việc truy cập trang web
sẽ dễ dàng và thường xuyên hơn Vì vậy, em được phân công đồ án với đề tài thiết kế website cho bộ môn Kỹ thuật máy tính
Website sử dụng công nghệ LINQ to SQL làm nề tảng cho việc lập trình Ngoài
ra còn sử dụng ngôn ngữ HTML và CSS để thiết kế giao diện
Tuy đã hết sức cố gắng, nhưng thời gian không cho phép, cộng với vốn kiến thức quá ít ỏi, nên trong quá trình thực hiện đề tài không tránh khỏi thiếu sót, mong được ý kiến đóng góp của thầy cô và các bạn
Sinh viên
Đặng Thị Nhường
Trang 4MỤC LỤC
LỜI CẢM ƠN i
LỜI NÓI ĐẦU iii
MỤC LỤC iv
DANH MỤC HÌNH vi
DANH MỤC BẢNG viii
MỞ ĐẦU 1
CHƯƠNG I: CÔNG CỤ LẬP TRÌNH 2
1.1 Công nghệ LINQ to SQL 2
1.1.1 Giới thiệu 2
1.1.2 Sử dụng LINQ to SQL 3
1.1.3 Truy vấn trong LINQ to SQL 6
1.1.4 Các toán tử thường sử dụng trong LINQ to SQL 8
1.1.5 Thực hiện truy vấn trong LINQ to SQL 10
1.1.6 Sử dụng Stored Procedure trong LINQ to SQL 12
1.1.7 Sử dụng LinqDataSource 16
1.2 SQL Server 2012 20
1.3 Visual Studio 2012 21
1.4 HTML 21
1.4.1 Giới thiệu chung 21
1.4.2 Các thẻ HTML cơ bản 22
1.5 CSS 23
CHƯƠNG II: XÂY DỰNG WEBSSITE 25
2.1 Khảo sát hệ thống 25
2.1.1 Đặc tả bài toán 25
2.1.2 Các yêu cầu chức năng 25
2.1.3 Các yêu cầu phi chức năng 25
2.2 Phân tích hệ thống 26
2.2.1 Các chức năng chính 26
2.2.2 Các tác nhân tác động lên hệ thống 27
2.3 Mô hình hóa các chức năng 27
Trang 52.3.1.Biểu đồ ngữ cảnh 27
2.3.2 Biểu đồ luồng dữ liệu 27
2.4 Mô tả chi tiêt các chức năng 31
2.4.1 Chức năng của đối tượng người dùng 31
2.4.2 Chức năng của thành viên ban quản trị 34
2.4.3 Chức năng của Admin 38
2.5 Mô hình hóa dữ liệu 43
2.5.1 Mô hình thực thể, liên kết: 43
2.5.2 Mô hình dữ liệu quan hệ 44
2.6 Thiết kế CSDL vật lý 44
CHƯƠNG III: KẾT QUẢ ĐẠT ĐƯỢC 48
3.1 Giao diện người dùng 48
3.1.1 Menu giới thiệu 48
3.1.2 Menu đào tạo 48
3.1.3 Menu thư viện 49
3.1.4 Menu sinh viên 50
3 2 Giao diện nhà quản trị 51
3.2.1 Menu quản lí nhân sự 51
3.2.2 Menu quản lí đào tạo 51
3.2.3 Menu quản lí thư viện 51
KẾT LUẬN 53
TÀI LIỆU THAM KHẢO 53
Trang 6DANH MỤC HÌNH
Hình 1.1.1 Mô hình ánh xạ trong LINQ to SQL 3
Hình 1.1.2: Cửa sổ thêm mới lớp LINQ to SQL 4
Hình 1.1.3: Cửa sổ thiết kế LINQ to SQL 4
Hình 1.1.4: Cửa sổ Server Explorer và cửa sổ Add Connection 5
Hình 1.1.5: Ánh xạ các table trong cửa sổ thiết kế LINQ to SQL 5
Hình 1.1.6 Cửa sổ Class View 6
Hình 1.1.7: Ánh xạ thủ tục trong LINQ to SQL 12
Hình 1.1.8: Hộp thoại cấu hình thủ tục thêm dũ liệu 14
Hình 1.1.9: Cấu hình thủ tục sửa dữ liệu 15
Hình 1.1.10: Cửa sổ tạo mới LinqDataSource cho điều khiển 16
Hình 1.1.11: Hộp thoại chọn cấu hình dữ liệu nguồn 17
Hình 1.1.12: Các hộp thoại cấu hình cho dữ liệu nguồn trong LinqDataSource 17
Hình 1.1.13: Danh sách các đề tài khi sử dụng LinqDataSource 17
Hình 1.1.14: Phân trang và sắp xếp trong LinqDatasource 18
Hình 1.1.15: Xóa và chỉnh sửa dữ liệu trong LinqDataSource 18
Hình 1.1.16 : Xoá cột trong LinqDataSource 19
Hình 1.1.17: Kết quả sau khi thực hiện lọc đề tài theo loại dùng LinqDataSource 19
Hình 1.1.18: Mã nguồn lọc đề tài trong LinqDataSource 20
Hình 1.2.1: Màn hình làm việc của SQL Server 2012 20
Hình 1.3.1 : Giao diện Visual Studio 2012 21
Hình 2.3.1: Biểu đồ ngữ cảnh 27
Hình 2.3.2: Biểu đồ các chức năng và luồng dữ liệu chính 28
Hình 2.3.3: Quan hệ giữa chức năng và kho tài liệu 29
hình 2.3.4: Biểu đồ luồng dữ liệu quản lí đào tạo 29
Hình 2.3.5: Biểu đồ luồng dữ liệu quản lí thƣ viện 30
Hình 2.3.6: Biểu đồ luồng dữ liệu quản lí tin tức 30
Hình 2.3.7: Biểu đồ luồng dữ liệu quản lí nhân sự 31
Hình 2.3.8: Biểu đồ luồng dữ liệu quản lí thành viên 31
Hình 2.4.1: Biểu đồ chức năn xem thông tin 32
Trang 7Hình 2.4.2: Chức năng tìm kiếm thông tin 33
Hình 2.4.3: Biểu đồ chức năng tải tài liệu 33
Hình 2.4.4: Biểu đồ chức năng đăng nhập 34
Hình 2.4.5: Biểu đồ chức năng đăng xuất 35
Hình 2.4.6: Biểu đồ chức năng quản lí lịch dạy 36
Hình 2.4.7: Biểu đồ chức năng quản lí tin tức 37
Hình 2.4.8: Biểu đồ chức năng quản lí đề tài 38
Hình 2.4.9: Biểu đồ chức năng quản lí học phần 39
Hình 2.4.10:Biểu đồ chức năng quản lí hướng nghiên cứu 40
Hình 2.4.11: Biểu đồ chức năng quản lí thành viên 42
Hình 2.5.1: Mô hình thực thể - liên kết 43
Hình 3.1.1: Giao diện trang giới thiệu chung 48
Hình 3.1.2: Giao diện trang nhân sự 48
Hình 3.1.3: Giao diện trang lịch dạy 49
Hình 3.1.4: Giao diện trang môn học 49
Hình 3.1.5: Giao diện trang văn bản 49
Hình 3.1.6: Giao diện trang tài liệu 50
Hình 3.1.7: Giao diện trang tin tức 50
Hình 3.1.8: Giao diện trang chi tiếtt tin 50
Hình 3.1.9: Giao diện trang đề tài 50
Hình 3.2.1: Giao diện chức năng quản lí nhân sự 51
Hình 3.2.2: Giao diện chức năng quản lí lịch day 51
Hình 3.2.3: Giao diện chức năng quản lí học phần 51
Hình 3.2.4: Giao diện chức năng quản lí tài liệu 51
Hình 3.2.5: Form thêm mới tin tức 52
Hình 3.2.6: Giao diện trang quản lí đề tài 52
Hình 3.2.7: Giao diện trang quản lí tin tức 52
Trang 8Đặng Thị Nhường- Lớp 51K1- Khoa CNTT
DANH MỤC BẢNG
Bảng 2.6.1: Bảng học phần 44
Bảng 2.6.2: Bảng sinh viên 44
Bảng 2.6.3: Bảng tài liệu 45
Bảng 2.6.4: Bảng học phần_tài liệu 45
Bảng 2.6.5: Bảng cán bộ 45
Bảng 2.6.6: Bảng hướng nghiên cứu 45
Bảng 2.6.7: Bảng thời khóa biểu 46
Bảng 2.6.8: Bảng thời khóa biểu_ học phần_ lớp 46
Bảng 2.6.9: Bảng đề tài 46
Bảng 2.6.10: Bảng cán bộ_ đề tài 46
Bảng 2.6.11: Bảng cán bộ _ hướng nghiên cứu 47
Bảng 2.6.12: Bảng tin tức 47
Bảng 2.6.13: Bảng sinh viên_cán bộ_đề tài 47
Bảng 2.6.14: Bảng thành viên 47
Trang 93 Nhiệm vụ
Tìm hiểu về LINQ to SQL và ứng dụng công nghệ này vào thiết kế web
Tìm hiểu nghiệp vụ thiết kế và quản lý website
Tìm hiểu các công cụ xây dựng chương trình
Sử dụng tất cả các công cụ và vốn hiểu biết để tạo một trang web với đầy đủ chức năng, dễ nhìn và có tính bảo mật
4 Đối tượng nghiên cứu
Website bộ môn Kỹ Thuật máy Tính
5 Phương pháp nghiên cứu
Khảo sát thực tế về nhu cầu tìm kiếm thông tin
Khảo sát thực tế, cụ thể là nghiệp vụ chức năng của bộ môn Kỹ thuật máy tính Thu thập tài liệu và sách báo về công nghệ LINQ to SQL
Thu thập tài liệu và sách báo liên quan đến việc thiết kế web
Tham khảo các trang web liên quan đến bộ môn
6 Ý nghĩa lí luận và thực tiễn
Việc tìm hiểu về LINQ to SQL nhằm nâng cao sự hiểu biết về công nghệ mới này trong việc lập trình, đặc biệt là việc thiết kế website Qua đó, cũng giúp phát triển kiến thức về khả năng lập trình trong học tập và nghiên cứu
Việc thiết kế website bộ môn Kỹ thuât máy tính có tính thực tế cao, nhằm đáp ứng nhu cầu tìm kiếm thông tin của đại bộ phận cán bộ và sinh viên đang theo giảng dạy và học tập tại khoa Công nghệ thông tin, chuyên nghành Kỹ thuật máy tính Website cũng hỗ trợ đầy đủ chức năng giúp người quản trị tiết kiệm thời gian và công sức trong việc quản lí và cập nhật tin tức
Trang 10CHƯƠNG I: CÔNG CỤ LẬP TRÌNH 1.1 Công nghệ LINQ to SQL
Sau khi đã được mô hình hóa, chúng ta có thể truy vấn, cập nhật dữ liệu LINQ
to SQL cũng hỗ trợ đầy đủ giao tác (transaction), view và các thủ tục (stored procedure) Nó cũng cung cấp các khả năng kiểm tra tính hợp lệ của dữ liệu và các quy tắc trong mô hình dữ liệu
Chẳng hạn, sử dụng trình thiết kế LINQ to SQL, chúng ta có thể mô hình hóa CSDL “WEB_KTMT” như dưới đây:
Trang 11Hình 1.1.1 Mô hình ánh xạ trong LINQ to SQL
Mô hình LINQ to SQL ở trên định nghĩa các lớp thực thể là: GiangVien, HocPhan, TaiLieu, HP_TL, ThoiKhoaBieu, DeTai, TinTuc,ThanhVien
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
Các mũi tên giữa các lớp thực thể trên biểu diễn quan hệ giữa các thực thể Chúng được tạo ra dựa trên các mối quan hệ primary-key/foreign-key trong 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 Ví dụ, lớp GiangVien ở trên có một mối quan hệ một - nhiều với lớp DeTai, điều này có nghĩa là trong mỗi đối tượng GiangVien, sẽ có một tập hợp các đối tượng DeTais Và, trong mỗi đối tượng DeTai, cũng sẽ có một GiangVien chứa DeTai nay
Bên phải của trình thiết kế, chúng ta có thể kéo vào các thủ tục, các phương thức do chúng ta tự thiết kế trong khi lập trình
1.1.2 Sử dụng LINQ to SQL
2.1.2.1 Tạo mô hình dữ liệu LINQ to SQL
Có thể thêm một mô hình dữ liệu LINQ to SQL vào một dự án ASP.NET bằng cách
click chuột phải vào project, chọn Add ─˃Add New Item và chọn tùy chọn LINQ to SQL Classes, sau đó đặt tên cho lớp DataContext vào ô Name và bấm Add
Khi đó, một cửa sổ thiết kế LINQ to SQL hiện ra:
Trang 12Hình 1.1.2: Cửa sổ thêm mới lớp LINQ to SQL
Hình 1.1.3: Cửa sổ thiết kế LINQ to SQL
1.1.2.2 Tạo các lớp thực thể
Để có thể tạo ra các lớp thực thể, trước hết ta cần kết nối với máy chủ CSDL
Ở cửa sổ Server Explorer, click vào biểu tượng Connect to Database (Vùng khoanh tròn) Cửa sổ Add Connection hiện ra Nhập tên máy chủ CSDL vào ô Server name, click Refressh, sau đó chọn CSDL mà chúng ta muốn sử dụngn để ánh xạ vào LINQ to SQL
Trang 13Hình 1.1.4: Cửa sổ Server Explorer và cửa sổ Add Connection
Sau khi đã kết nối được với CSDL, chúng ta kéo các Table vào vùng trống ở phía bên trái Khi đó, tương ứng với mỗi table trong CSDL là một lớp thực thể trong DataContext
Hình 1.1.5: Ánh xạ các table trong cửa sổ thiết kế LINQ to SQL
Các Table, View từ CSDL được ánh xạ thành các Class được gọi là các lớp thực thể (Entity Class), và mỗi một cột trong bảng sẽ được ánh xạ thành một thuộc tính trong thực thể đó
Ví dụ, lớp LINQDataContext dưới đây được tạo ra từ mô hình CSDL WEB_KTMT ở trên:
Trang 14Hình 1.1.6 Cửa sổ Class View Lớp LINQDataContext này sẽ chứa tất cả các thuộc tính biểu diễn mỗi bảng được mô hình hóa từ CSDL và chứa các phương thức hay thủ tục mà chúng ta tạo ra trong quá trình lập trình
1.1.3 Truy vấn trong LINQ to SQL
( Tất cả các ví dụ đều sử dụng mô hình ánh xạ trên)
1.1.3.1 Truy vấn dùng biểu thức truy vấn (Query Expresion)
[ order by thuộc_tính_cần_sắp_xếp descending|ascending]
select tên_biến1 | group tên_biến1 by thuộc_tính_cần_nhóm into
tên_nhóm
[select new {ds_các_trường_hiển_thị}]
Trang 15- ds_các_trường_hiển_thị: cách nhau bởi dấu phẩy
Một biểu thức truy vấn phải bắt đầu bằng mệnh đề from và kết thúc bằng mệnh
đề select hoặc group Ở giữa mệnh đề from và mệnh đề select, có thể thêm vào các mệnh đề khác như: where, orderby, join, Hay một mệnh đề from khác
Ví dụ: đưa ra danh sách các giảng viên đã đăng tin trong ngày hôm nay Sắp xếp danh sách theo thứ tự tăng dần MaGV
1.1.3.2 Truy vấn sử dụng cú pháp Lambda
Biểu thức Lambda trả về kết quả truy vấn là Null hoặc là một tập các đối
tượng
Cú pháp Lamba trong LINQ to SQL có dạng:
(input parameters) => expression
Trong đó:
- Vế trái là các tham số đầu vào
- Ở giữa là toán tử “=>ˮ
- Vế phải là các biểu thức hoặc câu lệnh
Nếu chỉ có một tham số, dấu mở và đóng ngoặc là tùy chọn Ngược lại, với hai tham số trở lên thì bắt buộc phải có
Kiểu của các tham số có thể được khai báo tường minh hoặc không tường minh Nếu không khai báo, trình duyệt sẽ tự xác định kiểu, tuy nhiên trong một số trường hợp, bạn phải chỉ rõ kiểu của nó, ví dụ: s =>s.Lengh (lỗi)
Ở đây, phải khai báo kiểu dữ liệu cho biến s Sửa lại là (string s) =>s.Lengh
Ví dụ: Lọc ra tất cả các học phần có TenHP trùng với giá trị đang chọn
Trang 16trêndrd_TenHP
Ở ví dụ trên, biến ten được ngầm hiểu là một thành phần con của đối tượng HocPhan (hay biến tên được ngầm hiểu có kiểu HocPhan)
*) Nói thêm về từ khóa var
Từ khóa var dành để khai báo biến mà không quan tâm đến kiểu dữ liệu của nó
Mặc định, nó tự gán kiểu dữ liệu của biến theo kiểu dữ liệu của kết quả trả về của biểu thức bên phải
Biến được khai báo sau từ khóa var phải được khởi tạo ngay khi khai báo
Câu lệnh khởi tạo phải là một biểu thức
Biểu thức khởi tạo không được có kiểu null (VD: var bien = null)
1.1.4 Các toán tử thường sử dụng trong LINQ to SQL
1.1.4.1 Toán tử select
Toán tử select dùng để thực hiện phép chiếu trên một chuỗi
Có 2 cách sử dụng mệnh đề select:
- Trả về một đối tượng
Ví dụ: trả về thông tin tất cả các tin tức có trong bảng TinTuc
- Trả về các thuộc tính do người dùng tự định nghĩa, nhưng các thuộc tính
này phải thuộc đối tượng Trong trường hợp này, ta sử dụng toán tử new đứng sau
mệnh đề select
Ví dụ: trả về danh sách cán bộ gồm họ tên, chức danh, học vị
1.1.4.2 Toán tử where
Toán tử where lọc về các kết quả thỏa mãn một yêu cầu cụ thể
Ví dụ: tìm tất cả giảng viên có chức danh “Tiến sĩ”
Ta có thể kết hợp toán tử where với các toán tử and hoặc or như sau:
Trang 17Chú ý: and trong LINQ được viết là &&, or được viết là ||
1.1.4.3 Toán tử join
Toán tử join dùng kết nối hai đối tượng trong cùng một nguồn dữ liệu mà có
chung một thuộc tính
Cú pháp:
from (a) in (A)
join (b) in (B) on a.X equal b.X
Tạm dịch là: Lấy các đối tượng trong thực thể A kết nối đến các đối tượng trong thực thể B qua thuộc tính X
Ví dụ: tìm tất cả các giảng viên đang hướng dẫn đề tài
Ở ví dụ này, đối tượng GiangVien và đối tượng DeTai kết nối qua thuộc tính MaGV
Ví dụ: tìm các loại đề tài có nhiều hơn một đề tài
Trước tiên, phải nhóm các đề tài theo nhóm Sau đó, đếm số đề tài trong từng nhóm
Ở ví dụ trên, LoaiDT chính là khóa
Trang 181.1.4.5 Toán tử order by
Toán tử này dùng để sắp xếp các phần tử trong chuỗi theo một hoặc nhiều
thuộc tính
Ví dụ: sắp xếp các tin theo thức tự giảm dần ngày tháng
1.1.4.6 Toán tử Take() và Skip()
Hai toán tử này thường được dùng để phân trang kết quả truy vấn
Ví dụ: lấy về danh sách các tin tức, bất đầu từ tin thứ 0, lấy 10 tin
1.1.5 Thực hiện truy vấn trong LINQ to SQL
1.1.5.1 Đọc dữ liệu
Khi đã định nghĩa mô hình dữ liệu như trên, chúng ta có thể dễ dàng truy vấn
và lấy dữ liệu từ CSDL bằng cách viết các câu truy vấn dùng trong LINQ to SQL với lớp LINQDataContext mà chúng ta đã tạo
Ví dụ: lấy ra tất cả các tài liệu trong bảng TaiLieu có LoaiTL là “Học Tập”
1.1.5.2 Thêm dữ liệu
Để thêm một dòng vào CSDL, ta thực hiện các bước:
+) Khai báo một đối tượng mới
+) Thêm các thuộc tính cho đối tượng
+) Thêm đối tượng mới vào tập các đối tượng bằng lệnh InsertOnsubmit
+) Gọi phương thức SubmitChange() để lưu vào CSDL
Trang 19Ví dụ: thêm tin mới vào tập các “TinTuc”
Ở ví dụ trên, ta đã khai báo một đối tượng mới là “tt” thuộc lớp “TinTuc” Sau
đó gán giá trị cho các thuộc tính: TenTin, ChiTietTin, Ngay, MaGV Tiếp đến, dùng lệnh InsertOnsubmit(tt) để thêm đối tương “tt” vào tập các đối tượng thuộc lớp
“TinTuc” Và cuối cùng, sử dụng phương thức SubmitChange() để cập nhật vào
CSDL
1.1.5.3 Xóa dữ liệu
Để xóa một dòng ra khỏi CSDL, ta thực hiện các bước:
+) Lọc những dòng cần xóa bằng truy vấn LINQ
+) Xóa đối tượng ra khỏi lớp thực thể chứa đối tượng đó
+) Gọi phương thức SubmitChange() để cập nhật thay đổi vào CSDL
Ví dụ: xóa tất cả các tài liệu học tập có trong danh sách TaiLieus
Để xóa tập danh sách các đối tượng, ta dùng DeleteAllOnSubmit (tập đối
tượng)
Nếu chỉ xóa một đối tượng , ta dùng lệnh DeleteOnSubmit(đối tượng cần xóa)
1.1.5.4 Cập nhật dữ liệu
Để thay đổi thông tin cho đối tượng, cần:
+) Tìm tất cả các đối tượng cần thay đổi bằng truy vấn LINQ
+) Đặt lại giá trị cho các thuộc tính
+) Gọi phương thức SubmitChange() để cập nhật thay đổi
Ví dụ: sửa tin có mã tin trùng với mã tin nhận được từ biến session
Trang 201.1.6 Sử dụng Stored Procedure trong LINQ to SQL
LINQ cũng cho phép chúng ta ánh xạ các thủ tục đã được tạo trong cơ sở dữ liệu thành các phương thức trong lớp DataContext, và sử dụng chúng như là các câu lệnh sql động để lấy dữ liệu về
Giả sử chúng ta đã tạo được một thủ tục để trả về danh sách các học phần có trong bảng học phần:
Bây giờ, chúng ta sẽ ánh xạ thủ tục này vào lớp Datacontext bằng cách vào cảu
sổ Server Explorer, mở danh sách các thủ tục và kéo thủ tục này lên cửa sổ thiết kế của LINQ to SQL:
Hình 1.1.7: Ánh xạ thủ tục trong LINQ to SQL
Mặc định, tên của phương thức được tạo ra trong lớp Datacontext chính là tên của thủ tục, và kiểu trả về của phương thức sẽ là một kiểu được tạo tự động với cách đặt tên theo dạng “[Tên_thủ_tục]Result” Ví dụ thủ tục trên sẽ trả về một dãy các đối tượngc ó kiểu ds_HocPhanResult Chúng ta có thể đổi tên của phương thức nếu muốn bằng cách chọn thủ tục rồi vào cửa sổ Property để đặt lại tên khác
Trang 21Ví dụ: kéo thủ tục tt_dsHocPhan vào lớp HocPhan, sẽ trả về tập các đối tượng
có kiều HocPhan:
Ưu điểm khi sử dụng thủ tục ánh xạ lên các thực thể, là ta có thể thực hiện thêm, sửa, xóa các đối tượng của thực thể thông qua các thủ tục, mà không cầ viết một câu lệnh nào trong file mã nguồn cs, việc thay đổi này hoàn toàn xảy ra trên mô hình
dữ liệu, và trong suốt với các chương trình dùng nó
Ví dụ tạo thủ tục tt_ThemHocPhan có nhiệm vụ chèn thêm một bản ghi mới vào bảng HocPhan:
Trang 22sổ hiện ra cho phép chúng ta tùy biến hành vi insert:
Nếu chọn chế độ mặc nhiên ("Use Runtime") thì LINQ to SQL sẽ tính toán và sinh ra câu lệnh SQL động để thực hiện các thao tác tương ứng Chúng ta có thể thay đổi bằng cách nhấn chuột vào Customize và chọn thủ tục tt_ThemHocPhan từ danh sách các SPROC:
Hình 1.1.8: Hộp thoại cấu hình thủ tục thêm dũ liệu
LINQ to SQL sẽ hiển thị các tham số của thủ tục mà ta đã chọn, và cho phép ánh xạ các thuộc tính của lớp HocPhan với các tham số của thủ tục tt_ThemHocPhan Mặc nhiên, LINQ to cũng tự động xác định các tham số tương ứng theo tên, tuy nhiên chúng ta có thể sửa lại nếu muốn
Ấn OK Và bây giờ, bất cứ khi nào một đối tượng HocPhan được thêm vào DataContext và phương thức SubmitChanges() được gọi, thủ tục tt_ThemHocPhan sẽ được thực thi thay cho câu lệnh SQL động
Trang 23Bước 2: kéo thả vào cửa sổ LINQ to SQL
Bước 3: Cấu hình cho thủ tục bàng cách vào cửa sổ “Properties”, nhấp vào nút
“ ” ở mục “UpDate”
Hình 1.1.9: Cấu hình thủ tục sửa dữ liệu
Làm tương tụ như đối với thủ tục tt_ThemHocPhan, nhưng chú ý các giá trị chúng ta muốn gán là giá trị mới (Current) hay là giá trị gốc (Original) - là các giá trị lấy về lần đầu từ CSDL Ví dụ, gán gía trị MaHP(Current)_ “mới” vào tham số
@MaHP_moi của thủ tục tt_SuaHocPhan, và giá trị MaHP(Original)_ “gốc” vào tham
số @MaHP_cu
Nhấn “OK” Và từ bây giờ, mỗi khi cập nhật lại giá trị cho đối tượng HocPhan
và gọi SubmitChanges(), thủ tục tt_SuaHocPhan sẽ được gọi thay cho câu lệnh SQL
Trang 24- Xóa dữ liệu
Làm tương tự như thêm và sửa
1.1.7 Sử dụng LinqDataSource
Điều khiển <asp:LinqDataSource> là một điều khiển ASP.NET hiện thực hóa
mô hình DataSourceControl được giới thiệu trong ASP.NET 2.0 Nó tương tự như các đièu khiển ObjectDataSource và SqlDataSource, được dùng để khai báo việc gắn nối
dữ liệu giữa một điều khiển ASP.NET với một nguồn dữ liệu Nhưng điểm khác biệt
là thay vì gắn nối trực tiếp vào CSDL (như SqlDataSource) hay vào một lớp
(ObjectDataSource), <asp:linqdatasource> được thiết kế để gắn vào một mô hình dữ liệu LINQ
Một trong những ưu điểm của việc dùng <asp:linqdatasource> là nó tận dụng được tính mềm dẻo của các trình cung cấp LINQ (LINQ provider: như LINQ to SQL, LINQ to Object…) Chúng ta không cần định nghĩa các phương thức truy vấn thêm, sửa, xóa cho nguồn dữ liệu để gọi, thay vào đó có thể trỏ <asp:linqdatasource> đến
mô hình dữ liệu của mà chúng ta đã tạo, chỉ ra lớp thực thể nào muốn làm việc, rồi gắn nối nó vào một điều khiển ASP.NET và cho phép chúng làm việc với nhau
Để thực hiện điều đó:
Bước 1: ta định nghĩa mô hình dữ liệu ( như đã giới thiệu ở phần trên)
Bước 2: tạo một điều khiển ASP.NET để thực hiện gắn nối
Bước 3: chuyển sang chế độ thiết kế, chọn điều khiển muốn gắn nối, và sau đó chọn “New Data Source…” bên trong dang sách “Choose Data Source:”
Hình 1.1.10: Cửa sổ tạo mới LinqDataSource cho điều khiển
Một hộp thoại sẽ hiện lên, trong đó có danh sách các loại datasource, chọn LINQ trong hộp thoại này, và đặt định danh cho điều khiển LinqDataSource vào ô:
Trang 25
Hình 1.1.11: Hộp thoại chọn cấu hình dữ liệu nguồn
Thực hiện các bước như hình dưới
Hình 1.1.12: Các hộp thoại cấu hình cho dữ liệu nguồn trong LinqDataSource
Ở đây, ta chọn dữ liệu nguồn cho điều khiển Gridview vừa tạo là bảng DeTai Sau khi ấn “Finish”, chúng ta đã có một danh sách các Đề tài theo dạng lưới không cần làm thêm bất kỳ điều gì
Hình 1.1.13: Danh sách các đề tài khi sử dụng LinqDataSource
LinqDataSource cũng cho phép phân trang và cho phép sửa, xóa dữ liệu mà cần thêm bất kỳ phương thức, ánh xạ nào, cũn không cầ viết thêm bất kỳ lệnh nào Tất
cả các thao tác đều tự động.Khi cập nhật, LINQ to SQL sẽ đảm bảo rằng các quy tắc
Trang 26xử lý và kiểm tra dữ liệu mà ta đã thêm vào mô hình LINQ to SQL (dưới dạng các phương thức partial) cũng sẽ được thực hiện trước khi dữ liệu được thực sự cập nhật vào CSDL
Để thực hiện sắp xếp hoặc phân trang, chọn điều khiển mà chúng ta gắn nối LinqDataSource và nhấp vào hình tam giác nhỏ để bật lên ở chọn “ Enable Sorting”, hay “Enable Paging”
Hình 1.1.14: Phân trang và sắp xếp trong LinqDatasource
Để thực hiện tính năng sửa, xóa dữ liệu tự động, chọn “Configure Data Source”, chương trình sẽ đưa ta quay trở lại các cửa sổ cấu hình dữ liệu nguồn như ban đầu Chọn chức năng “Advanced” , đánh dấu check như hình dưới và “OK”
Hình 1.1.15: Xóa và chỉnh sửa dữ liệu trong LinqDataSource
Bây giờ ở chế độ thiết kế đã có thêm hai tùy chon mới là “Enable Deleting” và
“Enable Editing” Đánh dấu check vào hai tùy chon đó để thực hiên xóa, sửa dũ liệu
tự động
Chúng ta có thể xóa bớt các cột không cầ thiết bằng cách sửa mã nguồn, hay trong chế độ thiết kế Nhấp chuột lên cột muốn xóa và chọn “Remove Column”
Trang 27
Hình 1.1.16 : Xoá cột trong LinqDataSource
LinqDataSource cũng cho phép lọc lại dữ liệu các cột theo một tiêu chí nào đó, bằng cách vào chế độ thiêt kế, nhấp hình tam giác nhỏ ở điều khiển gắn nối
LinqDataSource, chọn “Configure Data Source”, cửa sổ thiết kế lúc đầu xuất hiện Ta chọn nút “Where” trong cửa sổ này để thêm một bộ lọc vào control datasource Có thể tạo ra nhiều bộ lọc nếu cần, và kéo các giá trị để lọc từ một vài chỗ khác nhau Ví dụ:
từ querystring (trên web), từ các giá trị trên form, từ các control khác trên trang…)
Ví dụ: lọc các loại đề tài theo điều khiển Dropdownlist trên trang web:
Hình 1.1.17: Kết quả sau khi thực hiện lọc đề tài theo loại dùng LinqDataSource
Và ở trang mã nguồn sẽ hiển thị:
Trang 28Hình 1.1.18: Mã nguồn lọc đề tài trong LinqDataSource
1.2 SQL Server 2012
Server 2012 là một hệ thống quản lý cơ sở dữ liệu (Relational Database
Management System (RDBMS)) sử dụng Transact-SQL để trao đổi dữ liệu giữa máy khách (Client computer) và máy chủ (Server computer) Một RDBMS bao gồm máy chủ CSDL, các ứng dụng dùng để quản lý dữ liệu và các bộ phận khác trong RDBMS SQL Server 2012 được tối ưu để có thể chạy trên môi trường cơ sở dữ liệu rất lớn, lên đến Tera- Byte và có thể phục vụ cùng lúc cho hàng ngàn user SQL Server 2012 có thể kết hợp “ăn ý” với các server khác nhau như: Microsoft Internet Information
Server (IIS), E- Commerce Server, Proxy Server…
Hình 1.2.1: Màn hình làm việc của SQL Server 2012
Trang 291.3 Visual Studio 2012
Visual Studio 2012 là bộ công cụ phát triển phần mềm tích hợp mạnh mẽ có trong phiên bản 3.5 của NET Framwork với những tính năng: thiết kế giao diện, hỗ trợ viết mã Visual Studio 2012 có khả năng sử dụng lại các đoạn mã mẫu Không những thế Visual Studio 2012 cho phép tạo ứng dụng với giao diện giống của
Outlook
Hình 1.3.1 : Giao diện Visual Studio 2012
1.4 HTML
1.4.1 Giới thiệu chung
HTML (HyperText Markup Language) là ngôn ngữ hiển thị siêu văn bản, dùng thiết kế các trang web Một tập tin HTML là một tập tin có đuôi html hoặc htm
HTML giúp định dạng văn bản trong trang Web nhờ các thẻ Hơn nữa, các thẻ html có thể liên kết từ hoặc một cụm từ với các tài liệu khác trên Internet Đa số các thẻ HTML có dạng thẻ đóng mở Thẻ đóng dùng chung từ lệnh giống như thẻ mở, nhưng thêm dấu xiên phải (/) Ngôn ngữ HTML qui định cú pháp không phân biệt chữ hoa chữ thường Ví dụ, có thể khai báo <html> hoặc <HTML> Không có khoảng trắng trong định nghĩa thẻ
Thanh công cụ chuẩn Solution Explorer: chứa các
trang đã được thiết kế
Hộp Toolbox: chứa các điều khiển
hỗ trợ thiết kế giao diện
Kéo thả các Toolbox vào
1 trong 2 vùng này
Viết mã HTML/CSS vào vùng này
Trang 30Cấu trúc chung của một trang HTML
<!DOCTYPE>: Phần khai báo chuẩn của html hay xhtml
<head></head>: Phần khai báo ban đầu, khai báo về meta, title, css, javascript…
<body></body>: Phần chứa nội dung của trang web, nơi hiển thị nội dung
1.4.2 Các thẻ HTML cơ bản
1 Thẻ <head> </head>: Tạo đầu mục trang
2 Thẻ <title> </title>: Tạo tiêu đề trang trên thanh tiêu đề, đây là thẻ bắt
buộc Thẻ title cho phép bạn trình bày chuỗi trên thanh tựa đề của trang Web mỗi khi trang Web đó được duyệt trên trình duyệt Web
3 Thẻ <body> </body>: Tất cả các thông tin khai báo trong thẻ <body> đều
có thể xuất hiện trên trang Web Những thông tin này có thể nhìn thấy trên trang Web
4 Các thẻ định dạng khác Thẻ <p>…</p>:Tạo một đoạn mới Thẻ <font>
</font>: Thay đổi phông chữ, kích cỡ và màu kí tự,
5 Thẻ định dạng bảng <table>…</table>: Đây là thẻ định dạng bảng trên trang Web Sau khi khai báo thẻ này, bạn phải khai báo các thẻ hàng <tr> và thẻ cột
<td> cùng với các thuộc tính của nó
6 Thẻ hình ảnh <img>: Cho phép bạn chèn hình ảnh vào trang Web Thẻ này
thuộc loại thẻ không có thẻ đóng Thuộc tính “src” trong thẻ dùng đề chỉ đường dẫn tới ảnh
7 Thẻ liên kết <a> </a>: Là loại thẻ dùng để liên kết giữa các trang Web
hoặc liên kết đến địa chỉ Internet, Mail hay Intranet(URL) và địa chỉ trong tập tin