Tải bản đầy đủ (.doc) (11 trang)

Chuyên đề công nghệ linq

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (588.09 KB, 11 trang )

Chuyên đề LinQ
Tổng Quan về LINQ
1. Giới thiệu về LINQ
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ững trở 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ô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).
LINQ 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ăng suất lập trình
cho các lập trình viên, Microsoft đã phát triển giải pháp tích hợp dữ liệu .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) nhằm cung cấp khả
năng truy vấn trực tiếp dữ liệu Object, cơ sở dữ liệu và XML.
Đ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 mảng đã tạo ra trước đó. Vì thế ta
có các khái niệm như là LinQ to SQL, LinQ to XML,….
Các thành phần của LINQ
Hình 1. Kiến trúc của LINQ trong .NET Framework 3.5
Page 1
Chuyên đề LinQ
LINQ to Objects
“LINQ to Objects” ở đây có nghĩa là nói đến cách sử dụng LINQ đối với các đối tượng
Collection mà đã được thực thi giao diện IEnumerable hoặc IEnumerable<T> tức những
Collection có thể “liệt kê” ra được. Đây là trường hợp 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 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 dùng LINQ, cũng như cập nhật/thêm/xóa dữ
liệu từ đó.
LINQ to SQL hỗ trợ đầy đủ transaction, view và các stored procedure (SP). Nó cũng cung cấp


một cách dễ dàng để thêm khả năng kiểm tra tính hợp lệ của dữ liệu và các quy tắc vào
trong mô hình dữ liệu của bạn.
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 sơ về DataSet
DataSet trong ADO.NET là một bước phát triển lớn trong việc phát triển ứng dụ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ới Data Source trong khi chờ
user (người dùng) 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 khi ngắ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à bạn cần phải xử lý
thông qua các lớp DataTable (DataRow và DataColumn).
Page 2
Chuyên đề LinQ
Hình 2. Kiến trúc DataSet.
LINQ 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
KẾT NỐI ĐẾN CSDL
- View -> Server Explorer
- Kích phải chuột lên DataConnection -> Add Connection
Hình 3. Kết nối đến cơ sở dữ liệu.
Page 3
Chuyên đề LinQ
Tạo ra mô hình dữ liệu LINQ TO SQL
Hình 4. Tạo mô hình LinQ to SQL.
Hình 5. Tạo mô hình LinQ to SQL.
Page 4

Chuyên đề LinQ
MÔ HÌNH ÁNH XẠ CỦA LINQ TO SQL
(ánh xạ CSDL theo hướng đối tượng)
Hình 6. Mô hình ánh xạ LinQ to SQL.
Page 5
Chuyên đề LinQ
TẦNG KIẾN TRÚC CỦA LINQ TO SQL
(là cầu nối giao tiếp giữa Application và SQL Server)
Hình 7. Tầng kiến trúc của LinQ to SQL.
Một số ví dụ Demo
LINQ TO DATASET
Dùng để truy vấn, sắp xếp, lọc dữ liệu,…nhanh và dễ dàng hơn
Hình 8. Lọc dữ liệu theo khoa của LinQ to DataSet.
Page 6
Chuyên đề LinQ
this.view_LinqtoDataSetTableAdapter.Fill(this.dataSet_LinQtodataset.View_LinqtoDataSet,
cbbKhoa.SelectedValue.ToString());
LINQ TO SQL
SELECT
VD: Hiển thị DL bảng SinhVien
dbDataContext db = new dbDataContext();
var sv = from p in db.SinhViens
select p;
VD: Hiển thị DL bảng SinhVien (Lựa chọn cột hiển thị)
dbDataContext db = new dbDataContext();
var sv = from p in db.SinhViens
select new {p.MaSV, p.HoSV, p.TenSV};
Take,Skip
VD: Lấy mẫu tin đầu tiên trong bảng(Lấy sinh viên đầu tiên trong bảng SinhVien).
var sinhviens = (from p in db.SinhVien

select p).Skip(0).Take(1); //Tương đương SELECT TOP 1 trong SQL
VD: Tương tự trên, nhưng lấy mẫu tin cuối cùng(sinh viên cuối cùng trong bảng SinhVien).
var sinhviens = (from p in db.SinhVien
orderby p.MaSV descending
select p).Skip(0).Take(1);
VD: Tương tự trên, nhưng lấy mẫu tin thứ 5 và 6(sinh viên thứ 5 và 6 trong bảng SinhVien).
var sinhviens = (from p in db.SinhVien
select p).Skip(4).Take(2);
Orderby
VD: Sắp xếp giảm dần theo cột tên (mặc định tăng dần)
Page 7
Chuyên đề LinQ
dbDataContext db = new dbDataContext();
var sv = from p in db.SinhViens
orderby p.TenSV descending
select new {p.MaSV, p.HoSV, p.TenSV};
Distinct() //Loại bỏ các phần tử trùng nhau
VD: Sắp xếp giảm dần theo cột tên
dbDataContext db = new dbDataContext();
var sv = (from p in db.SinhViens
select new {p.MaSV, p.HoSV, p.TenSV}).Distinct();
Where
VD: Lấy điều kiện theo MaKhoa
dbDataContext db = new dbDataContext();
var sv = from p in db.SinhViens
where p.MaKhoa=="CN"
select new {p.MaSV, p.HoSV, p.TenSV};
VD: Lấy điều kiện theo Họ (chuỗi liên quan đến)
dbDataContext db = new dbDataContext();
var sv = from p in db.SinhViens

where p.HoSV.Contains(“Trần“)
select new {p.MaSV, p.HoSV, p.TenSV};
VD: Lấy điều kiện theo Họ (ký tự đầu tiên)
dbDataContext db = new dbDataContext();
var sv = from p in db.SinhViens
where p.HoSV. StartsWith (“T“)
select new {p.MaSV, p.HoSV, p.TenSV};
VD: Lấy điều kiện theo Họ (ký tự cuối)
Page 8
Chuyên đề LinQ
dbDataContext db = new dbDataContext();
var sv = from p in db.SinhViens
where p.HoSV. EndsWith (“y“)
select new {p.MaSV, p.HoSV, p.TenSV};
Join
VD: Liên kết nhiều bảng
dbDataContext db = new dbDataContext();
var sv = from p in db.SinhViens
join k in db.Khoas
on p.MaKhoa equals k.MaKhoa
select new {p.MaSV, p.HoSV, p.TenSV,p.TenKhoa};
Group
VD: Nhóm dữ liệu (Tính tổng học bổng theo khoa)
dbDataContext db = new dbDataContext();
var sv = from p in db.SinhViens
join k in db.Khoas
on p.MaKhoa equals k.MaKhoa
group p by p.Khoa.TenKhoa into kq
select new { MaSV= kq.Key,TongHB=kq.Sum(t=>t.HocBong) };
CÁC HÀM TỔNG HỢP

VD: Liên kết nhiều bảng
dbDataContext db = new dbDataContext();
var sv = from p in db.SinhViens
join k in db.Khoas
on p.MaKhoa equals k.MaKhoa
group p by p.Khoa.TenKhoa into kq
Page 9
Chuyên đề LinQ
select new { MaSV= kq.Key,TongHB=kq.Sum(t=>t.HocBong) };
select new { MaSV= kq.Key,TongHB=kq. Average(t=>t.HocBong) };
select new { MaSV= kq.Key,SoLuongSV=kq. Count()};
select new { MaSV= kq.Key,TongHB=kq. Max(t=>t.HocBong) };
select new { MaSV= kq.Key,TongHB=kq.Min(t=>t.HocBong) };
Dùng để Thêm, Sửa, Xóa,…
Thêm thông tin
InsertOnSubmit()và SubmitChanges()
Hình 9. Thêm thông tin vào cơ sở dữ liệu.
Xóa thông tin
DeleteOnSubmit()và SubmitChanges()
Page 10
Chuyên đề LinQ
Hình 10. Xóa thông tin từ cơ sở dữ liệu.
Cập nhật thông tin
SubmitChanges()
Hình 11. Cập nhật thông tin xuống cơ sở dữ liệu.
=========XIN TẠM DỪNG Ở ĐÂY==========
Page 11

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×