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

Tìm hiểu công nghệ LINQ và ứng dụng

123 1 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 123
Dung lượng 2,49 MB

Nội dung

LUẬN VĂN TỐT NGHIỆP ĐỀ TÀI: “Tìm hiểu cơng nghệ LINQ ứng dụng.” LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng Mục lục I Giới thiệu LINQ II Giới thiệu truy vấn LINQ II.1 Ba phần biểu thức LINQ II.2 Các liệu nguồn II.3 Truy vấn 10 II.3 Thực thi truy vấn 10 II.4 Thực thi bắt buộc tức thời 11 III Tổng quan thiết kế O / R 11 III.1 Mở O / R Designer 12 III.2 Cấu hình tạo DataContext 12 III.3 Tạo tổ chức lớp mà sở liệu đồ để bàn xem 13 III.4 DataContext tạo phương pháp gọi thủ tục lưu trữ hàm 13 III.5 Cấu hình DataContext để sử dụng thủ tục lưu trữ liệu lưu liệu lớp thực thể sở liệu 13 III.6 Thừa kế O / R Designer 13 IV Các truy vấn LINQ to SQL 13 IV.1 Tách rời DataContext tạo lớp thực thể vào namespaces khác 14 IV.2 Làm để: Chỉ định lưu trữ Thực thủ tục Update, Insert, delete 14 V LINQ kiểu có chung đặc điểm 14 V.1 IEnumerable biến câu truy vấn LINQ 15 V.2 Cho phép chương trình biên dịch xử lý loại khai báo chung 15 V.3 Hoạt động truy vấn 16 V.3.1 Obtaining a Data Source 16 V.3.2 Filtering( Lọc) 17 V.3.3 Ordering (Thứ tự) 17 V.3.4 Grouping 17 V.3.5 Joining 18 V.3.6 Selecting (Projections) 19 V.4 Chuyển đổi liệu với LINQ 19 Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng V.4.1 Tham gia vào nhiều yếu tố đầu vào xuất trình tự 20 V.4.2 Lựa chọn tập hợp phần tử nguồn 21 V.4.3 Chuyển đổi đối tượng nhớ vào XML 22 V.4.4 Thực hoạt động phần tử nguồn 23 V.4.5 Loại quan hệ thao tác truy vấn 24 V.5.6 Truy vấn mà khơng chuyển hóa nguồn liệu 24 V.5.7 Trình biên dịch phải suy luận loại thông tin 25 V.6 Cú pháp truy vấn vs cú pháp phương thức 26 V.6.1 Toán tử truy vấn chuẩn mở rộng phương thức 26 V.6.2 Biểu thức Lambda 28 V.7 Các đặc trưng LINQ hỗ trợ C#3.0 29 V.7.1 Biểu thức truy vấn 29 V.7.2 Implicitly Typed Variables (var) 30 V.7.3 Đối tượng, tập hợp giá trị đầu vào 30 V.7.4 Các loại chưa xác định 30 V.7.5 Các phương thức mở rộng 31 V.7.6 Các thuộc tính tự động thi hành 31 V.8 Viết câu truy vấn C# 31 V.8.1 Để thêm liệu nguồn 31 V.9 Tạo truy vấn 32 V.9.1 Để tạo truy vấn đơn giản 32 V.9.2 Để thực truy vấn 33 V.9.3 Để thêm điều kiện lọc 33 V.9.4 Chỉnh sửa truy vấn 33 V.9.5 Để nhóm kết 34 V.9.6 To order the groups by their key value 34 V.9.7 Để giới thiệu định danh cách sử dụng let 34 V.9.8 Để sử dụng cú pháp phương thức biểu thức truy vấn 35 V.9.9 Để chuyển đổi dự án mệnh đề select 35 VI LINQ to SQL 36 VI.1 Kết nối 37 Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng VI.2 Giao dịch 38 VI.3 Lệnh SQL trực tiếp 39 Các tham số 39 VI.4 Cách kết nối sở liệu (LINQ to SQL) 39 VI.5 Cách tạo sở liệu (LINQ to SQL) 41 VI.6 Bạn làm với LINQ to SQL 43 VI.6.1 Lựa chọn(Select) 43 VI.6.2 Cách chèn hàng vào sở liệu (LINQ to SQL) 43 VI.6.3 Chèn hàng vào sở liệu 44 VI.6.4 Cách cập nhật hàng sở (LINQ to SQL) 45 VI.6.5 Cập nhật 46 VI.7 Cách xóa hàng sở liệu (LINQ to SQL) 47 Xóa 50 VI.8 Quy trình lưu trữ (LINQ to SQL) 50 VI.8.1 Chèn, cập nhật xóa hoạt động sở liệu LINQ to SQL 51 VI.8.2 Cách gửi thay đổi đến sở liệu (LINQ to SQL) 52 VI.8.3 Tạo lớp LINQ to SQL ánh xạ vào bảng sở liệu or khung nhìn 54 VI.8.4 Để tạo lớp ánh xạ vào liệu bảng khung nhìn LINQ to SQL 54 VII LINQ to XML 55 VII.1 Định nghĩa 55 VII.2 Thêm vào lặp 56 VII.3 Xóa lặp 57 VII.4 Tại xử lý LINQ tự động? 58 VII.5 Làm để: viết phương thức axis LINQ to XML 59 VII.6 Cách tạo tài liệu với Namespaces (LINQ to XML) (C#) 67 VII.7 Cách Stream XML Fragments từ XmlReader 69 VII.8 Cách tạo sơ đồ (Tree) từ XmlReader 71 VII.9 Thay đổi XML tròn nhớ so với Functional Construction (LINQ to XML) 72 VII.10 Chuyển đổi thuộc tính vào phần tử 73 Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng VII.10.1 Chỉnh sửa XML 73 VII.10.2 Cách tiếp cận Functional Construction 73 VII.10.3 Removing Elements, Attributes, and Nodes from an XML Tree 74 Code 76 VII.10.4 Làm để: Lọc Tùy chọn Element 77 VII.10.5 Làm để: Tìm đơn Descendant rõ Phương thức sử dụng 79 VII.10.6 Làm để: Tìm tất Nodes Namespace 79 VII.10.7 Làm để: Tìm phần tử với phần tử cụ thể 80 VII.10.8 Làm để: Tìm Element với thuộc tính cụ thể 81 VII.10.9 Làm để: Tìm Descendants với cụ thể Element namespace 81 VII.10.10 Làm để: Tạo văn từ tập tin XML 82 VII.10.11 Làm để: tạo hệ đẳng cấp cách sử dụng nhóm 83 VII.10.12 Làm để: Join hai sưu tập 83 VII.10.13 Làm để: Load XML từ tệp 85 VII.11 Sửa đổi XML Trees 85 VII.11.1 Làm để: Viết truy vấn mà phần tử dựa bối cảnh 86 VII.11.2 Làm để: Viết truy vấn với lọc phức tạp 88 VII.11.3 Làm để: Truy vấn LINQ để sử dụng XML xpath 89 VII.11.4 Làm để: Xắp sếp phần tử 89 VII.11.5 Làm để: xắp sếp phần tử có nhiều khóa 90 VII.11.6 Làm để: Xắp sếp theo sách thực chuyển đổi tài liệu XML lớn 90 VII.11.7 Làm để:truy cập luồng XML phân mảnh với thông tin cho tiêu đề 93 VII.12 So sánh Xpath LINQ to XML 96 VIII LINQ to Objects 97 VIII.1 Làm để: Truy vấn với ArrayList LINQ 98 VIII.2 LINQ and Strings 99 VIII.3 Làm để: Đếm xuất từ chuỗi (LINQ) 99 VIII.4 Làm để: Truy vấn cho câu chứa từ 101 VIII.5 Làm để: Truy vấn cho ký tự String (LINQ) 102 VIII.6 Làm để: Kết hợp LINQ truy vấn với biểu thức quy 103 Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng VIII.7 Câu hỏi bán cấu trúc liệu định dạng văn 104 VIII.7.1 Làm để: Tìm tập khác biệt hai danh sách (LINQ) 105 VIII.7.2 Làm để: Sắp xếp hay Lọc liệu Văn từ trường (LINQ) 105 VIII.7.3 Làm để: Sắp xếp lại trường định giới file 106 VIII.8 Để tạo tệp liệu 106 VIII.8.1 Làm để: Kết hợp so sánh tập hợp chuỗi (LINQ) 107 VIII.8.2 Làm để: Lấy tập hợp đối tượng từ nhiều nguồn (LINQ) 108 VIII.8.3 Làm để: Gia nhập nội dung từ file không dạng 110 VIII.8.4 Làm để: Tách file vào file cách sử dụng nhóm (LINQ) 110 VIII.8.5 Làm để: Tính tốn giá trị cột văn tệp CSV (LINQ) 111 IX LINQ to ADO.NET 113 X LINQ to DataSet 114 X.1 Tổng quan LINQ to DataSet 115 X.2 Truy vấn DataSet sử dụng LINQ để DataSet 116 X.3 Ứng dụng N-tier LINQ to DataSet 117 X.4 Đang tải liệu vào DataSet 118 X.5 Truy vấn DataSet 119 X.6 Để truy vấn LINQ to DataSet 120 Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu công nghệ LINQ ứng dụng I Giới thiệu LINQ LINQ viết tắt từ Language – Integrated Query tạm dịch ngơn ngữ tích hợp truy vấn đổi Visual Studio 2008 NET Framework 3.5 cầu nối khoảng cách giới đối tượng với giới liệu Theo truyền thống câu truy vấn liệu thể cách dễ dàng giống chuỗi kí tự đơn giản mà khơng cần đến kiểu kiểm tra thời điểm biên dịch hỗ trợ trình hỗ trợ trực quan Hơn bạn cần phải tìm hiểu ngơn ngữ truy vấn khác cho loại liệu liệu nguồn khác như: Cở sở liệu SQL, tài liệu XML, dịch vụ Web LINQ làm cho truy vấn lớp xây dựng ngôn ngữ C# Visual Basic Bạn viết câu truy vấn dựa tập hợp đối tượng cách sử dụng ngơn ngữ, từ khóa tốn tử quen thuộc Ví dụ minh họa sau cho thấy phần câu truy vấn hoàn thành dựa sở liệu SQL Server C# với đầy đủ loại kiểm tra hỗ trợ trình hỗ trợ trực quan Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu công nghệ LINQ ứng dụng Trong Visual Studio 2008 bạn viết câu truy vấn LINQ Visual Basic C# với sở liệu SQL Server, tài liệu XML, ADO.NET Datasets tập đối tượng hỗ trợ IEnumerable có đặc điểm chung giống giao diện IEnumerable LINQ hỗ trợ cho thực thể ADO.NET Framework LINQ nhà cung cấp viết bên thứ ba cho nhiều dịch vụ Web triển khai liệu khác Bạn sử dụng truy vấn LINQ dự án dự án có Một yêu cầu dự án xây dựng NET Framework 3.5 II Giới thiệu truy vấn LINQ Một câu truy vấn biêu thức gọi liệu từ liệu nguồn Câu truy vấn thường nói rõ ngôn ngữ truy vấn đữ thiết kế cho mục dích riêng Các ngơn ngữ khác phát triển theo thời gian cho loại liệu ngồn, ví dụ SQL dành cho sở liệu quan hệ XQuery dành cho XML Vì nhà phát triển tìm hiểu ngơn ngữ truy vấn cho loại liệu nguồn định dạng mà họ phải hỗ trợ LINQ đơn giản tình trạng cách cung cấp mơ hình qn để làm việc với loại liệu nguồn khác định dạng Trong truy vấn LINQ bạn phải luôn làm việc với đối tượng Bạn sử dụng giống truy vấn mẫu mã hóa chuyển đổi liệu tài liệu XML, sở liệu SQL, ADO.NET DataSet cho định đạng mà nhà cung cấp LINQ có sẵn II.1 Ba phần biểu thức LINQ Tất biểu thức LINQ làm việc theo ba thao tác Có liệu nguồn Tạo truy vấn Thực truy vấn Ví dụ mã nguồn sau cho thấy ba phần truy vấn hoạt động Ví dụ sử dụng mảng số nguyên thay cho nguồn liệu; Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng nhiên, khái niệm áp dụng cho nguồn liệu khác có Ví dụ giới thiệu đến suốt phần lại chủ đề class IntroToLINQ { static void Main() { // The Three Parts of a LINQ Query: // Data source int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, }; // Query creation // numQuery is an IEnumerable var numQuery = from num in numbers where (num % 2) == select num; // Query execution foreach (int num in numQuery) { Console.Write("{0,1} ", num); } } } Minh họa sau cho thấy hoạt động truy vấn tìm kiếm hoàn tất Trong LINQ việc thực truy vấn riêng biệt từ thân câu truy vấn Nói cách khác bạn không lấy liệu cách tạo biến truy vấn Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng II.2 Các liệu nguồn Trong ví dụ trước liệu mảng, hồn tồn hỗ trợ đặc điểm chung giao diện IEnumerable Điều có nghĩa thực tế truy vấn với LINQ Một truy vấn thực câu lệnh foreach foreach yêu cầu IEnumerable hay IEnumerable(T) Loại có hỗ trợ IEnumerable(T) giao diện IQueryable(T) gọi loại queryable Một loại queryable không yêu cầu phải sửa đổi hay xử lý đặc biệt để phục vụ LINQ nguồn liệu Nếu nguồn liệu khơng phải có nhớ loại queryable, nhà cung cấp LINQ phải đại diện cho Ví dụ, LINQ to XML tài liệu XML vào queryable XElement: // Query execution foreach (int num in numQuery) { Console.Write("{0,1} ", num); } Với LINQ to SQL trước tiên bạn tạo đối tượng quan hệ ánh xạ vào lúc thiết kế làm thủ cơng cách sử dụng trình thiết kế đối tượng quan hệ(O/R Designer) Bạn viết câu truy vấn bạn dựa đối tượng thi hành Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng // Find the names that occur in both files (based on // default string comparer) IEnumerable commonNamesQuery = fileA.Intersect(fileB); OutputQueryResults(commonNamesQuery, "Merge based intersect:"); on // Find the matching fields in each list Merge the two // results by using Concat, and then // sort using the default string comparer string nameMatch = "Garcia"; IEnumerable tempQuery1 = from name in fileA let n = name.Split(',') where n[0] == nameMatch select name; IEnumerable tempQuery2 = from name2 in fileB let n2 = name2.Split(',') where n2[0] == nameMatch select name2; IEnumerable nameMatchQuery = tempQuery1.Concat(tempQuery2).OrderBy(s => s); OutputQueryResults(nameMatchQuery, String.Format("Concat based on partial name match \"{0}\":", nameMatch)); // Keep the console window open in debug mode Console.WriteLine("Press any key to exit"); Console.ReadKey(); } static void OutputQueryResults(IEnumerable query, string message) { Console.WriteLine(System.Environment.NewLine + message); foreach (string item in query) { Console.WriteLine(item); } Console.WriteLine("{0} total names in list", query.Count()); } } VIII.8.2 Làm để: Lấy tập hợp đối tượng từ nhiều nguồn (LINQ) Ví dụ cho thấy để trộn liệu từ loại nguồn khác vào chuỗi loại Các ví dụ mã sau trộn chuỗi với Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 108 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng mảng số nguyên Tuy nhiên, nguyên tắc áp dụng cho hai nguồn liệu, bao gồm kết hợp đối tượng nhớ Ví dụ: Ví dụ sau cho thấy cách sử dụng tên kiểu Student để lưu trữ liệu từ hai nhớ tập hợp chuỗi mà mô liệu bảng tính Trước tiên tạp hợp chuỗi miêu tả tên ID, tập hợp miêu tả ID học sinh(trong cột đầu tiên) class Student { public string FirstName { get; set; } public string LastName { get; set; } public int ID { get; set; } public List ExamScores { get; set; } } class PopulateCollections { static void Main() { Dissimilar Files (LINQ) string[] names = System.IO.File.ReadAllLines(@" / / /names.csv"); string[] scores = System.IO.File.ReadAllLines(@" / / /scores.csv"); IEnumerable queryNamesScores = from name in names let x = name.Split(',') from score in scores let s = score.Split(',') where x[2] == s[0] select new Student() { FirstName = x[0], LastName = x[1], ID = Convert.ToInt32(x[2]), ExamScores = (from scoreAsText in s.Skip(1) select Convert.ToInt32(scoreAsText)) ToList() }; List students = queryNamesScores.ToList(); foreach (var student in students) { Console.WriteLine("The average score of {0} {1} is {2}.", student.FirstName, student.LastName, student.ExamScores.Average()); } //Keep console window open in debug mode Console.WriteLine("Press any key to exit."); Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 109 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng Console.ReadKey(); } } VIII.8.3 Làm để: Gia nhập nội dung từ file không dạng Ví dụ cho thấy để tham gia liệu từ hai dấu phẩy phân chia tập tin giá trị sử dụng chìa khóa phù hợp Kỹ thuật hữu ích bạn có kết hợp liệu từ hai bảng tính, hay liệu từ bảng tính tập tin có định dạng khác, vào tập tin Bạn sửa đổi ví dụ để làm việc với hình thức cấu trúc văn class JoinStrings { static void Main() { string[] names = System.IO.File.ReadAllLines(@" / / /names.csv"); string[] scores = System.IO.File.ReadAllLines(@" / / /scores.csv"); IEnumerable scoreQuery1 = from name in names let nameFields = name.Split(',') from id in scores let scoreFields = id.Split(',') where nameFields[2] == scoreFields[0] select nameFields[0] + "," + scoreFields[1] + "," + scoreFields[2] + "," + scoreFields[3] + "," + scoreFields[4]; OutputQueryResults(scoreQuery1, "Merge two spreadsheets:"); Console.WriteLine("Press any key to exit"); Console.ReadKey(); } static void OutputQueryResults(IEnumerable query, string message) { Console.WriteLine(System.Environment.NewLine + message); foreach (string item in query) { Console.WriteLine(item); } Console.WriteLine("{0} total names in list", query.Count()); } } VIII.8.4 Làm để: Tách file vào file cách sử dụng nhóm (LINQ) Ví dụ sau cho thấy cơng việc class SplitWithGroups { static void Main() { string[] fileA = System.IO.File.ReadAllLines(@" / / /names1.txt"); Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 110 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng string[] fileB = System.IO.File.ReadAllLines(@" / / /names2.txt"); var mergeQuery = fileA.Union(fileB); var groupQuery = from name in mergeQuery let n = name.Split(',') group name by n[0][0] into g orderby g.Key select g; foreach (var g in groupQuery) { // Create the new file name string fileName = @" / / /testFile_" + g.Key + ".txt"; // Output to display Console.WriteLine(g.Key); // Write file using (System.IO.StreamWriter sw = new System.IO.StreamWriter(fileName)) { foreach (var item in g) { sw.WriteLine(item); // Output to console for example purposes Console.WriteLine(" {0}", item); } } } // Keep console window open in debug mode Console.WriteLine("Files have been written Press any key to exit"); Console.ReadKey(); } } VIII.8.5 Làm để: Tính tốn giá trị cột văn tệp CSV (LINQ) Ví dụ cho thấy để thực tổng hợp thao tác tính tốn Sum, Average, Min, Max cột file Csv Ví dụ nguyên tắc hiển thị áp dụng cho loại cấu trúc văn class SumColumns { static void Main(string[] args) { string[] lines = System.IO.File.ReadAllLines(@" / / /scores.csv"); int exam = 3; SingleColumn(lines, exam + 1); Console.WriteLine(); MultiColumns(lines); Console.WriteLine("Press any key to exit"); Console.ReadKey(); } static void SingleColumn(IEnumerable strs, int examNum) { Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 111 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng Console.WriteLine("Single Column Query:"); var columnQuery = from line in strs let x = line.Split(',') select Convert.ToInt32(x[examNum]); var results = columnQuery.ToList(); // Perform aggregate calculations // on the column specified by examNum double average = results.Average(); int max = results.Max(); int = results.Min(); Console.WriteLine("Exam #{0}: Average:{1:##.##} Score:{3}", examNum, average, max, min); } static void MultiColumns(IEnumerable strs) { Console.WriteLine("Multi Column Query:"); High Score:{2} Low IEnumerable query = from line in strs let x = line.Split(',') let y = x.Skip(1) select (from str in y select Convert.ToInt32(str)); // Execute and cache the results for performance // ToArray could also be used here var results = query.ToList(); // Find out how many columns we have int columnCount = results[0].Count(); for (int column = 0; column < columnCount; column++) { var res2 = from row in results select row.ElementAt(column); double average = res2.Average(); int max = res2.Max(); int = res2.Min(); // is added to column because Exam numbers // begin with Console.WriteLine("Exam #{0} Average: {1:##.##} High Score: {2} Low Score: {3}", column + 1, average, max, min); } } } Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 112 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng IX LINQ to ADO.NET Ngơn ngữ tích hợp truy vấn (LINQ) định nghĩa tập toán tử truy vấn chuẩn bạn sử dụng ngơn ngữ lập trình NET Framework 3.0 Các toán tử truy vấn chuẩn cho phép bạn vận hành dự án, lọc, ngang nhớ tập hợp sở liệu bảng Lưu ý truy vấn LINQ thể ngơn ngữ lập trình riêng mình, khơng chuỗi kí tự nhúng vào đoạn mã ứng dụng Đây thay đổi đáng kể từ ứng dụng viết phiên cũ NET Framework Viết truy vấn từ bên ngơn ngữ lập trình bạn cung cấp vài lợi chủ chốt Nó đơn giản cách loại bỏ truy vấn cần phải sử dụng ngôn ngữ truy vấn riêng biệt Và bạn sử dụng IDE Visual Studio 2008 , LINQ cho phép bạn tận dụng lợi trình kiểm tra thời gian biên dịch, loại tĩnh, trình hỡ trợ thơng minh LINQ tích hợp vào nhiều khía cạnh khác việc truy cập liệu NET Framework, bao gồm việc ngắt kết nối DataSet với mơ hình lập trình giản đồ sở liệu SQL Server Phần để mô tả LINQ to ADO.NET Dưới mô hình cung cấp tổng quan LINQ to ADO.NET làm việc liên quan đến ngôn ngữ lập trình cao cấp , cơng nghệ LINQ, liệu ngồn mà LINQ làm việc Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 113 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng X LINQ to DataSet LINQ to DataSet làm cho dễ dàng nhanh để truy vấn liệu lưu trữ đối tượng DataSet Cụ thể, LINQ to DataSet làm đơn giản hóa câu truy vấn cách cho phép người phát triển viết truy vấn từ ngơn ngữ lập trình, thay sử dụng ngơn ngữ truy vấn riêng biệt Điều đặc biệt hữu ích cho người phát triển sử dụng Visual Studio, người tận dụng lợi thời gian biên dịch cú pháp kiểm tra, kiểu tĩnh, trình hỗ trợ cung cấp Visual Studio truy vấn họ LINQ to DataSet sử dụng để truy vấn liệu hợp từ nhiều nguồn liệu Điều cho phép vài kịch có u cầu tính linh hoạt cách miêu tả cho liệu xử lý, câu truy vấn cục tập hợp lại liệu tầng nhớ đệm ứng dụng web Đặc biệt, báo cáo chung chung, phân tích, giao dịch thơng minh ứng dụng yêu cầu phương thức thao tác tay Các hàm chức LINQ to DataSet thông qua phương phương thức mở rộng lớp DataRowExtensions DataTableExtensions LINQ to DataSet xây Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 114 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng dựng sử dụng sẵn có kiến trúc ADO.NET 2.0, khơng có nghĩa để thay ADO.NET 2.0 mã ứng dụng Hiện ADO.NET 2.0 mã tiếp tục chức ứng dụng LINQ to DataSet Mối quan hệ LINQ to DataSet tới ADO.NET 2.0 liệu lưu trữ minh họa sơ đồ sau X.1 Tổng quan LINQ to DataSet The DataSet chi tiết sử dụng rộng rãi thành phần ADO.NET Đó yếu tố chủ chốt chương trình tách rời dựa ADO.NET, cho phép bạn cache liệu từ nguồn liệu khác Để tầng trình diễn, DataSet tích hợp chặt chẽ với GUI kiểm sốt cho liên kết liệu Đối với tầng trung gian, cung cấp nhớ cache trì quan hệ hình dạng liệu, bao gồm truy vấn nhanh chóng đơn giản hệ đẳng cấp hướng dịch vụ Một kỹ thuật chung sử dụng để giảm số lượng yêu cầu sở liệu sử dụng DataSet cho nhớ đệm tầng Ví dụ, lưu ý đến điều khiển liệu ứng dụng web ASP.NET Thông thường, phần quan trọng ứng dụng liệu, khơng có thay đổi thường xun xuyên suốt phiên làm việc người sử dụng Dữ liệu giữ nhớ Web Server, mà làm giảm số lượng yêu cầu Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 115 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu công nghệ LINQ ứng dụng sở liệu đẩy mạnh tương tác người dùng Một khía cạnh hữu ích DataSet cho phép ứng dụng làm cho tập liệu từ nhiều nguồn liệu vào không gian ứng dụng Các ứng dụng sau thao tác liệu nhớ, trì mối quan hệ Mặc dù loạt nhô lên, DataSet hạn chế khả truy vấn Chọn phương thức sử dụng để lọc phân loại, phương thức GetChildRows GetParentRow sử dụng cho điều hướng hệ đẳng cấp Đối với điều phức tạp hơn, nhiên, người phát triển phải viết truy vấn tuỳ chỉnh Điều kết ứng dụng có hiệu suất khó để trì LINQ to DataSet làm cho dễ dàng nhanh để truy vấn liệu lưu trữ đối tượng DataSet Các truy vấn thể ngơn ngữ lập trình, khơng phải chuỗi chữ nhúng vào mã ứng dụng Điều có nghĩa người phát triển khơng tìm hiểu ngơn ngữ truy vấn riêng biệt Ngồi ra, LINQ to DataSet cho phép nhà phát triển Visual Studio để làm việc có hiệu hơn, Visual Studio IDE cung cấp cú pháp kiểm tra thời gian biên dịch, kiểu tĩnh, trình hỗ trợ thơng minh hỗ trợ cho LINQ LINQ to DataSet sử dụng để truy vấn liệu hợp từ nhiều nguồn liệu Điều cho phép vài kịch có yêu cầu tính linh hoạt cách miêu tả cho liệu xử lý, câu truy vấn cục tập hợp lại liệu tầng nhớ đệm ứng dụng web Đặc biệt, báo cáo chung chung, phân tích, giao dịch thơng minh ứng dụng yêu cầu phương thức thao tác tay X.2 Truy vấn DataSet sử dụng LINQ để DataSet Trước bạn bắt đầu truy vấn đối tượng DataSet cách sử dụng LINQ to DataSet, bạn cần phải tải liệu lên DataSet Có số cách để tải liệu vào DataSet, chẳng hạn cách sử dụng lớp DataAdapter hay LINQ to SQL Sau liệu tải vào đối tượng DataSet, bạn bắt đầu truy vấn Hình thành truy vấn cách sử dụng LINQ to DataSet tương tự cách sử dụng Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 116 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng ngơn ngữ truy vấn tích hợp (LINQ) dựa liệu nguồn mà LINQ cho phép Các truy vấn LINQ thực bảng DataSet hay dựa nhiều bảng cách sử dụng Join GroupJoin vận hành theo hoạt động truy vấn chuẩn Truy vấn LINQ hỗ trợ hai typed and đối tượng untyped DataSet Nếu giản đồ DataSet biết đến thời gian thiết kế ứng dụng, kiểu DataSet phó thác Trong kiểu DataSet, bảng hàng kiểu thành viên cho cột, làm cho truy vấn đơn giản dễ đọc Ngồi tốn tử truy vấn chuẩn triển khai thực thư viện System.Core.dll, LINQ to DataSet cho biết thêm vài DataSet-cụ thể mở rộng làm cho dễ dàng để truy vấn tập đối tượng DataRow Những DataSet-cụ thể mở rộng bao gồm tốn tử cho so sánh trình tự hàng, phương thức cung cấp truy cập đến cột giá trị DataRow X.3 Ứng dụng N-tier LINQ to DataSet Các ứng dụng liệu N-tier có trung tâm liệu ứng dụng tách thành nhiều lớp logic (hoặc cp) Một điển hình ứng dụng N-tier bao gồm tầng trình diễn, tầng trung chuyển liệu, tầng liệu(Mơ hình tam tầng) Tách ứng dụng thành cấu kiện vào tầng riêng biệt làm tăng lên trì quy mô ứng dụng Trong ứng dụng N-tier , DataSet thường sử dụng tầng trung gian để cache thông tin cho ứng dụng web.Truy vấn LINQ to DataSet thực chức thông qua phương thức mở rộng mở rộng có ADO.NET 2.0 DataSet Dưới sơ đồ hiển thị LINQ to DataSet liên quan đến DataSet fits vào ứng dụng N-tier: Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 117 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu công nghệ LINQ ứng dụng X.4 Đang tải liệu vào DataSet Một đối tượng DataSet trước tiên phải đổ liệu lên trước bạn truy vấn với LINQ to DataSet Có nhiều cách khác để đổ liệu lên DataSet Ví dụ, bạn sử dụng LINQ to SQL để truy vấn sở liệu tải kết vào DataSet Thêm cách để nạp liệu vào DataSet sử dụng lớp DataAdapter, để lấy liệu từ sở liệu Đây minh họa ví dụ sau try { // Create a new adapter and give it a query to fetch sales order, contact, // address, and product information for sales in the year 2002 Point connection // information to the configuration setting "AdventureWorks" string connectionString = "Data Source=localhost;Initial Catalog=AdventureWorks;" + "Integrated Security=true;"; SqlDataAdapter da = new SqlDataAdapter( "SELECT SalesOrderID, ContactID, OrderDate, OnlineOrderFlag, " + "TotalDue, SalesOrderNumber, Status, ShipToAddressID, BillToAddressID " + "FROM Sales.SalesOrderHeader " + "WHERE DATEPART(YEAR, OrderDate) = @year; " + "SELECT d.SalesOrderID, d.SalesOrderDetailID, d.OrderQty, " + "d.ProductID, d.UnitPrice " + "FROM Sales.SalesOrderDetail d " + "INNER JOIN Sales.SalesOrderHeader h " + "ON d.SalesOrderID = h.SalesOrderID " + "WHERE DATEPART(YEAR, OrderDate) = @year; " + "SELECT p.ProductID, p.Name, p.ProductNumber, p.MakeFlag, " + "p.Color, p.ListPrice, p.Size, p.Class, p.Style, p.Weight " + "FROM Production.Product p; " + "SELECT DISTINCT a.AddressID, a.AddressLine1, a.AddressLine2, " + "a.City, a.StateProvinceID, a.PostalCode " + "FROM Person.Address a " + "INNER JOIN Sales.SalesOrderHeader h " + "ON a.AddressID = h.ShipToAddressID OR a.AddressID = h.BillToAddressID " + "WHERE DATEPART(YEAR, OrderDate) = @year; " + "SELECT DISTINCT c.ContactID, c.Title, c.FirstName, " + "c.LastName, c.EmailAddress, c.Phone " + "FROM Person.Contact c " + "INNER JOIN Sales.SalesOrderHeader h " + "ON c.ContactID = h.ContactID " + "WHERE DATEPART(YEAR, OrderDate) = @year;", connectionString); Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 118 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng // Add table mappings da.SelectCommand.Parameters.AddWithValue("@year", 2002); da.TableMappings.Add("Table", "SalesOrderHeader"); da.TableMappings.Add("Table1", "SalesOrderDetail"); da.TableMappings.Add("Table2", "Product"); da.TableMappings.Add("Table3", "Address"); da.TableMappings.Add("Table4", "Contact"); // Fill the DataSet da.Fill(ds); // Add data relations DataTable orderHeader = ds.Tables["SalesOrderHeader"]; DataTable orderDetail = ds.Tables["SalesOrderDetail"]; DataRelation order = new DataRelation("SalesOrderHeaderDetail", orderHeader.Columns["SalesOrderID"], orderDetail.Columns["SalesOrderID"], true); ds.Relations.Add(order); DataTable contact = ds.Tables["Contact"]; DataTable orderHeader2 = ds.Tables["SalesOrderHeader"]; DataRelation orderContact = new DataRelation("SalesOrderContact", contact.Columns["ContactID"], orderHeader2.Columns["ContactID"], true); ds.Relations.Add(orderContact); } catch (SqlException ex) { Console.WriteLine("SQL exception occurred: " + ex.Message); } X.5 Truy vấn DataSet Sau đối tượng DataSet đổ liệu lên, bạn bắt đầu truy vấn Đưa vào câu truy vấn LINQ để truy vấn với DataSet tương tự cách sử dụng LINQ dựa liệu ngồn mà LINQ cho phép Hãy nhớ rằng, nhiên, bạn sử dụng LINQ truy vấn đối tượng DataSet bạn câu hỏi liệt kê đối tượng DataRow , thay liệt kê loại tùy thích Điều có nghĩa bạn sử dụng thành viên lớp DataRow truy vấn LINQ bạn Điều cho phép bạn để tạo truy vấn phong phú phức tạp Như với triển khai LINQ, bạn tạo truy vấn LINQ to DataSet hai hình thức khác nhau: cú pháp biểu thức truy vấn cú pháp truy vấn dựa phương thức Bạn sử dụng cú pháp biểu thức truy vấn cú pháp truy vấn dựa phương thức để thực truy vấn bảng DataSet, dựa nhiều bảng DataSet, hay dựa bảng kiểu DataSet Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 119 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng X.6 Để truy vấn LINQ to DataSet Một truy vấn biểu thức lấy liệu từ nguồn liệu Truy vấn thường thể rõ ràng ngôn ngữ truy vấn chuyên dụng, chẳng hạn SQL cho sở liệu qua hệ XQuery cho XML Vì vậy, người phát triển có để tìm hiểu ngơn ngữ truy vấn cho loại hình liệu nguồn định dạng liệu mà họ u cầu tìm kiếm Ngơn ngữ tích hợp truy vấn (LINQ) đưa mơ hình đơn giản, quán để làm việc với liệu loại liệu nguồn định dạng Trong truy vấn LINQ, bạn luôn làm việc với chương trình đối tượng Một truy vấn LINQ hoạt động bao gồm ba hành động: nhận nguồn nguồn liệu, tạo truy vấn, thực truy vấn Dữ liệu nguồn thực chung giao diện IEnumerable truy vấn thông qua LINQ Gọi AsEnumerable DataTable trả đối tượng mà thi hành chung interface IEnumerable , phục vụ liệu nguồn cho LINQ để truy vấn DataSet Trong truy vấn, bạn xác định xác thơng tin mà bạn muốn lấy từ nguồn liệu Một truy vấn định thơng tin phải xếp, gom nhóm, hình thành trước trả Trong LINQ, truy vấn lưu giữ biến Nếu truy vấn thiết kế để trả chuỗi giá trị, biến truy vấn phải kiểu liệt kê Biến truy vấn biến khơng có hành động khơng trả liệu; dự trữ máy tính thơng tin truy vấn Sau bạn tạo truy vấn mà bạn cần phải thực truy vấn, để trả liệu Trong truy vấn mà trả chuỗi giá trị, biến truy vấn khơng chứa kết truy vấn lữu trữ máy tính thông tin truy vấn lệnh truy vấn Sự thực thi truy vấn hoãn lại biến truy vấn lặp lại vòng lặp foreach Điều gọi thực chậm; có nghĩa là, thực truy vấn thời gian sau xảy số truy vấn xây dựng Điều có nghĩa Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 120 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng bạn thực truy vấn thường xuyên bạn muốn Điều hữu ích khi, ví dụ, bạn có sở liệu mà cập nhật ứng dụng khác Trong ứng dụng bạn, bạn tạo truy vấn, để lấy thông tin liên tục thực truy vấn, trả lần thông tin cập nhật Ngược lại chậm truy vấn, mà trả chuỗi giá trị, truy vấn mà trả giá trị thực Một số ví dụ truy vấn trả giá trị Count, Max, Average, First Những thực kết truy vấn u cầu để tính tốn kết Ví dụ, để tìm kết truy vấn trung bình phải mà chức trung bình có liệu đầu vào để làm việc với Bạn sử dụng ToList (Tsource) ToArray (TSource) phương thức truy vấn để thực thi truy vấn mà không đưa giá trị Những kĩ thuật để thực hữu ích bạn muốn cache kết truy vấn Sau đoạn mã ứng dụng mô tả truy vấn DataSet Ví dụ sau sử dụng Chọn để trở lại tất dòng sản phẩm từ bảng hiển thị sản phẩm // Fill the DataSet DataSet ds = new DataSet(); ds.Locale = CultureInfo.InvariantCulture; FillDataSet(ds); DataTable products = ds.Tables["Product"]; IEnumerable query = from product in products.AsEnumerable() select product; Console.WriteLine("Product Names:"); foreach (DataRow p in query) { Console.WriteLine(p.Field("Name")); } XI Tài liệu tham khảo: Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 121 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng Tài liệu trích từ MSDN Visual Studio2008 Thư viện MSDN online: http://msdn.microsoft.com/en- us/vbasic/aa904594.aspx Nutshell online: http://www.albahari.com/nutshell/linqquiz.aspx Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 122 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ... án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng khơng chứa kết truy vấn, bạn thực thường xuyên bạn muốn Ví dụ bạn dang có sở liệu mà cập nhập liên tục ứng dụng riêng biệt Trong ứng dụng bạn, bạn... ứng dụng Sinh viên thực Nguyễn Văn Thụy & Hoàng Mạnh Giỏi Trang 36 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng LINQ cho SQL Bạn tìm. .. Đồ án kỹ sư II Tìm hiểu cơng nghệ LINQ ứng dụng } } nw.SubmitChanges(); VI.7 Cách xóa hàng sở liệu (LINQ to SQL) Bạn xố hàng sở liệu tương ứng cách gỡ bỏ đối tượng LINQ SQL tương ứng từ tập hợp

Ngày đăng: 01/11/2022, 20:01

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

TÀI LIỆU LIÊN QUAN

w