LINQ 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 Object, CSDL Quan Hệ và XML.L
Trang 1LINQ to SQL
căn bản
Võ Minh Thiện - Mssv: 09520665 Đinh Đức Thành - Mssv: 09520646
Trang 2Để 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 có tên gọi là LINQ (Language Integrated Query).
TÌM HIỂU CÔNG NGHỆ
LINQ
Trang 3LINQ 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 Object, CSDL Quan Hệ và XML.
LINQ là một tập hợp các thành phần mở rộng cho phép viết các câu truy vấn dữ liệu ngay trong một ngôn ngữ lập trình, như C# hoặc VB.NET
ĐỊNH NGHĨA LINQ:
Trang 4ƯU ĐIỂM:
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 bạ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.
LINQ ra đời để giảm gánh nặng thao tác “hàn gắn” trên nhiều ngôn ngữ khác nhau.
Thứ I: Giảm gánh nặng thao tác
ThứII: Hỗ trợ nhiều kiễu dữ liệu:
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ư trang
HTML, email…), bạn lại phải sử dụng cú pháp truy vấn khác (XPath/XQuery) Cách giải quyết vấn đề tốt nhất hiện nay là LINQ
Trang 5ThứIII: Thống nhất về cú pháp
Cung cấp 1 cú pháp chung cho truy vấn dữ liệu từ nhiều
nguồn khác nhau
Với LINQ nó sẽ cung cấp cách duy nhất để truy cập dữ liệu
từ bất kể nguồn dữ liệu nào với cú pháp giống nhau
Ngoài ra, cung cấp cách viết dễ dàng cho việc đọc và
phân tích Trường hợp này sẽ được thể hiện rõ ràng khi
chúng ta cần lọc những dữ liệu với nhiều điều kiện phân cấp khác nhau thì LINQ sẽ thể hiện rõ tính ưu việt của mình
LINQ cũng cung cấp những bộ lọc, sắp xếp thứ tự, nhóm
dữ liệu với khối lượng code tối thiểu nhưng vẫn bảo đảm
tính rõ ràng
Trang 6LINQ có từ bản NET 3.5, vậy nên tối thiểu chương trình của bạn phải chạy trên nền tảng này.
Visual Studio 2008, hoặc các phiên bản Express
của nó là các bộ công cụ phát triển tiêu biểu cho
ứng dụng dùng LINQ
Yêu cầu để sử dụng LINQ:
Trang 7Nhắc lại : ADO.NET là công nghệ cho phép các ứng
dụng có thể kết nối và làm việc với các loại CSDL khác
nhau (truy vấn, cập nhật, thêm, xóa, gọi thủ tục…)
Bản thân LINQ không phải là một công nghệ được tạo ra để thay thế ADO.NET, bạn có thể làm việc với LINQ mà không dính gì đến CSDL
ADO.net và LINQ
LINQ to SQL, là một phần mở rộng của LINQ, cho phép
bạn có thể làm việc được với CSDL SQL Server, trong trường
hợp này thì khi viết bạn có thể bỏ qua các câu lệnh ADO.NET
mà chỉ quan tâm tới cú pháp mà LINQ cung cấp
Nhớ rằng dù bạn không hề dùng đến ADO.NET khi viết
chương trình sử dụng LINQ to SQL, nhưng đằng sau nó,
ADO.NET vẫn được dùng để thực hiện kết nối, gửi các câu
lệnh, các lời gọi thủ tục …
Một điểm cần chú ý:
Trang 9Tất cả các biểu thức LINQ làm việc theo ba thao tác :
1 Có được các dữ liệu nguồn
2 Tạo các truy vấn
3 Thực hiện các truy vấn
Truy vấn trong LINQ
Một câu truy vấn là một biêu thức gọi ra dữ liệu từ dữ liệu nguồn
Câu truy vấn thường nói rõ trong ngôn ngữ truy vấn dữ liệu được thiết kế cho mục dích riêng
BA PHẦN CỦA MỘT BIỂU THỨC LINQ
Trang 10Ba phần của một biểu thức LINQ
Trang 11• Chức năng của mô hình ORM
1 Tạo ra một mô hình đối tượng trong một ứng dụng để
ánh xạ các đối tượng trong một cơ sở dữ liệu
2 Tạo ra một mảng kiểu rõ ràng DataContext được sử
dụng để gửi và nhận dữ liệu giữa các lớp thực thể và cơ
sở dữ liệu
3 Cung cấp tính năng cho việc ánh xạ các thủ tục lưu trữ
và các hàm để thực hiện các phương thức trong
DataContext trả về dữ liệu
4 Cung cấp khả năng thiết kế, thừa kế các mối quan hệ
giữa các lớp thực thể
Mô hình ORM:
Trang 12• Thiết kế ORM (Object Relational Mapping)
LINQ TO SQL
Trang 13• Chức năng chính : LINQ to SQL giúp chuyển đổi các truy vấn đã
tích hợp ngôn ngữ trong mô hình đối tượng và chuyển chúng vào
cơ sở dữ liệu để xử lý Khi có kết quả, LINQ to SQL chuyển chúng trở lại các đối tượng mà bạn đang lập trình bằng ngôn ngữ của bạn.
• Ngoài ra, bạn có thể pha trộn mã LINQ to SQL với các ứng dụng
ADO.NET sẵn có và chuyển các giải pháp ADO.NET cho LINQ to SQL vì nó là một phần của ADO.NET và được cung cấp dịch vụ
bởi nhà cung cấp ADO.NET.
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)
Linq to SQL là gì?
Trang 14Thao tác với Linq
• Để thao tác với LinQ trước hết chúng ta phải khai báo
một intance của DataContext
• Có thể nói DataContext chính là điểm bắt đầu và cốt lõi
để làm việc với Linq
• DataContext chính là môi trường quản lí các đối tượng sau
khi được mapping và đảm nhiêm việc giao tiếp với csdl của chúng ta
Tùy vào tên gọi mà bạn đặt cho file dbml mà chung ta có tên DataContext tương ứng
Vd: Nếu đặt tên file là demo => DataContext sẽ được tự động đặt tên là demoDataContext
Lưu ý: Đây là tên do máy tự đặt, bạn có thể tùy chình lại theo
ý mình bằng cách vào Properties của DataContext
Trang 15Truy vấn dữ liệu:
Sau khi đã có được môt intance của DataContext thì ta bắt đầu thực
hiện các thao tác với csdl.
Tương tự như SQL , chúng ta cũng phải viết các câu lệnh truy
vấn , nhưng cú pháp truy vấn của Linq có nhiều điểm khác
so với SQL bởi đang truy vấn trên tập các Object
Cú pháp
From tên dại diện in dc.tập Object trong datacontext
Where điều kiện lọc
Order by sắp xếp
Select tên đại diện
(hoặc Select new {
thực hiện việc gán các alias cho tên các cột nếu có yêu cầu.})
Nếu đặt intance của datacontext là dc thì ta có cấu trúc như sau
Trang 17Cập nhật dữ liệu:
Linq cung cấp cho các bạn một cách thức đơn giản thông qua việc tương tác với các Object từ đó cập nhật vào csdl thông qua DataContext
Hàm InsertOnSubmit(object) them 1 object vao danh sách các object đã có
Hàm SubmitChanges() của DataContext thực hiện việc cập nhật dữ liệu từ cac object vào csdl
Thêm
Trang 18Cập nhật
Hàm SubmitChanges() của DataContext thực hiện việc cập
nhật dữ liệu từ các object vào csdl
Linq hỗ trợ truy cập đến 1 object thuộc một Entity thông qua giá trị của các thuộc tính bằng hàm Single cùng với cú pháp lamda đơn giản Như ví dụ bên dưới
Trang 20Hướng Dẫn Demo
1.Tạo một file demo.dbml để bắt đầu sử dụng Linq to SQL
2.Sử dụng Linq to SQL để truy vấn, thêm,
xóa, sửa dữ liệu
3.Kiểm tra dữ liệu với partial class.
Trang 21Thêm mới một file dbml đặt tên là demo.dbml
Trang 22File demo.dbml sau khi tao trong project của chúng ta.
Trang 23Kết nối với csdl thông qua Server Explorer, kéo từng bảng trong thư mục Table vào giao diện thiết kế của file demo.dbml Làm xong các thao tác trên, bạn có mô hình như sau.
Trang 24Code cho phần truy vấn dữ liệu.
Trang 25Code cho phần truy vấn dữ liệu với điều kiện.
Trang 26Code cho phần thêm và cập nhật dữ liệu.
Trang 27Code cho phần xóa dữ liệu.
Trang 28Tạo partial class để kiểm tra dữ liệu đầu vào.