§Ò tµi : øng dông c«ng nghÖ LINQ x©y dùng website ca nh¹c TRƯỜNG ĐẠI HỌC VINH KHOA CÔNG NGHỆ THÔNG TIN ------- ------- ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC ỨNG DỤNG CÔNG NGHỆ LINQ XÂY DỰNG WEBSITE CA NHẠC Giáo viên hướng dẫn: ThS. Trần Thị Kim Oanh Sinh viên thực hiện : Võ Tuấn Hoàng Lớp : 45K - CNTT Vinh, 2009 Vinh, 2009 Vâ TuÊn Hoµng - Líp 45K CNTT - §¹i Häc Vinh Trang 1 Đề tài : ứng dụng công nghệ LINQ xây dựng website ca nhạc MC LC LI NểI U Ngày nay, công nghệ thông tin đã và đang là một trong những nghành mũi nhọn của đất nớc. Sự phát triển của công nghệ thông tin không chỉ bó hẹp trong một lĩnh vực cụ thể mà nó đã ứng dụng rộng rãi trong tất cả các lĩnh vực của xã hội. Có thể nói công nghệ thông tin đã giúp con ngời giải quyết đợc nhiều bài toán phức tạp mà trớc đây khi cha xuất hiện máy tính con ngời khó có thể giải quyết đợc, nhng điều quan trọng ở đây không chỉ đơn thuần là giải quyết bài toán mà là cách giải quyết bài toán đó nh thế nào cho có hiệu quả và nhanh nhất. Hầu hết các ứng dụng trong công nghệ phần mềm hiện nay đều ứng dụng công nghệ LINQ vào quá trình xây dựng. Các ứng dụng website cũng không ngoại lệ, việc ứng dụng công nghệ LINQ vào thiết kế website làm cho việc lập trình trở nên đơn giản và hiệu quả hơn. Do đây là thời gian đầu tìm hiểu công nghệ mới nên chắc chắn không thể tránh khỏi những thiếu sót và hiệu quả đạt đợc cha cao. Rất mong đợc sự góp ý chân thành của các Thầy Cô, và tất cả các bạn . Võ Tuấn Hoàng - Lớp 45K CNTT - Đại Học Vinh Trang 2 Đề tài : ứng dụng công nghệ LINQ xây dựng website ca nhạc Em xin chân thành cảm ơn Cô giáo ThS. Trần Thị Kim Oanh đã tận tình giúp em hoàn thành đề tài này. Nội dung đề tài gồm có : 5 Chơng Chơng 1: Giới thiệu về công nghệ LINQ. Chơng 2: Giới thiệu về ASP.NET và hệ quản trị CSDL SQL 2005. Chơng 3: Phân tích và thiết kế hệ thống. Chơng 4: Giới thiệu sản phẩm. Chơng 5: Đánh giá kết quả đạt đợc và hớng phát triển. CHNG 1: TèM HIU V CễNG NGH LINQ Từ trớc tới nay khó khăn lớn nhất cho các nhà phát triển là phải đối mặt với sự khác biệt giữa ngôn ngữ 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ạp hơ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 là sử dụng SQL (Structure Query Language ngôn ngữ truy vấn cấu trú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ày vớ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 CSDL dạng quan hệ, nếu muốn truy cập dữ liệu XML hay dạng khác (nh 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ôn ngữ 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ích hợp dữ liệu cho .NET Framework Võ Tuấn Hoàng - Lớp 45K CNTT - Đại Học Vinh Trang 3 Đề tài : ứng dụng công nghệ LINQ xây dựng website ca nhạc có tên gọi là LINQ, đâ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 đối tợng, CSDL và XML. LinQ (Language Integrated Query): Là một ngôn ngữ kết hợp các câu lệnh truy vấn. Ngôn ngữ LINQ gồm 3 phần chính: 1.1. Linq to Object: L mt API ni m cung cp cỏc phng thc chun ca cỏc toỏn t truy vn ly li d liu t bt k i tng no. Cỏc cõu truy vn c thc hin trong b nh. 1.2. Linq to ADO.NET: B sung cỏc toỏn t truy vn lm vic vi quan h d liu. Nú gm 3 phn chớnh : 1.2.1. Linq to Sql: S dng cỏc cõu lnh truy vn c s d liu nh Microsoft SQL Server. 1.2.2. Linq to DataSet: H tr cỏc cõu lnh truy vn bng cỏch s dng tp hp d liu v cỏc bng d liu. 1.2.3. Linq to Entities: L mt gii phỏp quan h ỏnh x (ORM) ca Microsoft 1.3. Linq to XML: Nú khụng ch cỏc toỏn t truy vn nhng bao gm tt c ch th cỏc c trng rừ rng ca ti liu XML. Võ Tuấn Hoàng - Lớp 45K CNTT - Đại Học Vinh Trang 4 Đề tài : ứng dụng công nghệ LINQ xây dựng website ca nhạc 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 bản Orcas nay là .NET 3.5, nó cho phép bạ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. 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 CSDL 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. Bằng cách dùng trình thiết kế LINQ to SQL, chúng ta có thể dễ dàng tạo một mô hình cho CSDL mẫu Northwind giống nh dới đây: Võ Tuấn Hoàng - Lớp 45K CNTT - Đại Học Vinh Trang 5 Đề tài : ứng dụng công nghệ LINQ xây dựng website ca nhạc 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 trờng 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-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. 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ợp nà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ợng Product 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 Store Procedure để tơng tác với mô hình dữ liệu của chúng ta. Trong ví dụ trên chúng ta thêm một thủ tục có tên GetProductsByCategory. Nó nhận vào một categoryID và trả về một chuỗi các Product. Để lấy dữ liệu từ Store Procedure trên ta sẽ gọi tên thủ tục đó trong một lớp Class. Võ Tuấn Hoàng - Lớp 45K CNTT - Đại Học Vinh Trang 6 Đề tài : ứng dụng công nghệ LINQ xây dựng website ca nhạc 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, Visual Studio sẽ lu 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ật lại các thay đổi. Lớp DataContext đợc tạo sẽ có các thuộc tính để biểu diễn mỗi bảng đợc mô hình hóa từ CSDL, cũng nh các phơng thức cho mỗi Store Procedure mà chúng ta đã thêm vào. Lấy ví dụ, dới đây là lớp NorthwindDataContext đợc sinh ra dựa trên mô hình chúng ta tạo ra ở trên: Các ví dụ điển hình về LINQ to SQL 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ác thao tác chung khi xử lý dữ liệu: 1) Lấy các Product từ CSDL: Đ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ợng Product. Các sản phẩm đợc lấy ra phải thuộc phân loại Beverages: Võ Tuấn Hoàng - Lớp 45K CNTT - Đại Học Vinh Trang 7 Đề tài : ứng dụng công nghệ LINQ xây dựng website ca nhạc 2) Cập nhật một sản phẩm trong CSDL: Đoạn lệnh dới đây cho chúng ta thấy cách lấy một sản phẩm, cập nhật lại giá tiền, cổ phiếu và lu lại CSDL. 3) 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. ở đây không cần phải tự quản lý các mối quan hệ primary key/foreign key, thay vào đó, chúng ta 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ủa DataContext, LINQ to SQL sẽ biết cách thiết lập các giá trị primary key /foreign key một cách thích hợp. Võ Tuấn Hoàng - Lớp 45K CNTT - Đại Học Vinh Trang 8 Đề tài : ứng dụng công nghệ LINQ xây dựng website ca nhạc 4) 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 có chứa tên Toy khỏi CSDL: 5) 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áp của LINQ, mà gọi đến thủ tục GetProductsByCategory chúng ta đã thêm vào tr- ớc đây. ở đây một khi đã lấy về kết quả, chúng ta có thể cập nhật /xóa và sau đó gọi db.SubmitChanges() để cập nhật các thay đổi trở lại CSDL. Võ Tuấn Hoàng - Lớp 45K CNTT - Đại Học Vinh Trang 9 Đề tài : ứng dụng công nghệ LINQ xây dựng website ca nhạc 6) Phân trang kết quả truy vấn: Một trong những yêu cầu chung khi viết các trang web là bạn phải có khả năng phân trang một các hiệu quả. LINQ cung cấp sẵn hai hàm mở rộng cho phép bạn có thể làm điều đó một cách dễ dàng và hiệu quả - hàm Skip() và Take(). Bạn có thể dùng Skip() và Take() nh dới đây để chỉ ra rằng bạn chỉ muốn lấy về 10 đối tợng sản phẩm - bắt đầu từ một sản phẩm cho trớc mà chúng ta chỉ ra trong tham số truyền vào: Một trong những u điểm của mô hình này là nó cho phép bạn có thể viết các câu lệnh phức tạp bằng nhiều bớc, thay vì phải viết trong một câu lệnh đơn (giúp dễ đọc Võ Tuấn Hoàng - Lớp 45K CNTT - Đại Học Vinh Trang 10 . các ứng dụng trong công nghệ phần mềm hiện nay đều ứng dụng công nghệ LINQ vào quá trình xây dựng. Các ứng dụng website cũng không ngoại lệ, việc ứng dụng. chọn để áp dụng một phần nhỏ công nghệ mới đó. 3.1.2. Phạm vi của đề tài Đề tài ứng dụng LINQ xây dựng website ca nhạc với ứng dụng là website Nhạc trực