Công nghệ. NET là một trong những lĩnh vực môn nghiên cứu lập trình máy tính, Qua môn học này, sẽ giúp chúng em hiểu được kiến trúc, phạm vi ứng dụng đặc trưng của công nghệ NET. Hiểu được tính năng , ưu nhược của các công nghệ hiện đại trong.NET phiên bản mới như WPF, LINQ, Silver light. Từ cái nhìn tổng quan nay, sẽ giúp sinh viên định hướng ứng dụng công nghệ mình thích vào trong lập trình, mục tiên nâng cao trình độ lập trình, tạo ra những ứng dụng mang tính thực thi.
Trang 1
Trang 2LỜI NÓI ĐẦUông nghệ NET là một trong những lĩnh vực môn nghiên cứu lập trình máy
tính, Qua môn học này, sẽ giúp chúng em hiểu được kiến trúc, phạm vi ứngdụng đặc trưng của công nghệ NET Hiểu được tính năng , ưu nhược của các côngnghệ hiện đại trong.NET phiên bản mới như WPF, LINQ, Silver light Từ cái nhìntổng quan nay, sẽ giúp sinh viên định hướng ứng dụng công nghệ mình thích vàotrong lập trình, mục tiên nâng cao trình độ lập trình, tạo ra những ứng dụng mangtính thực thi
C
Chính vì vậy, chúng em đã chọn đề tài “ Tìm hiểu về LINQ” Các thành viên củanhóm đã cố gắng học, tìm tài liệu, lắng nghe sự chỉ bảo tận tình của thầy trong cácbuổi học Do sự hiểu biết kiến thức chưa sâu về bộ môn, chắc chắn đề tài củanhóm vẫn còn nhiều thiết sót Vì vậy, mong thầy xem xét lượng thứ, và đóng góp
ý kiến để chúng em ý thức hơn và rút kinh nghiệm cho các đề tài sau này
Cuối cùng, chúng em chân thành cám ơn thầy đã tạo cơ hội cho nhóm thực hiện đềtài
MỤC LỤC PHẦN 1 : TÌM HIỂU VỀ LINQ
I LINQ
Trang 31 Khái niệm 5
2 Mô hình kiến trúc LINQ: 6
3 Cú pháp truy vấn( Query Syntax) và cú pháp phương thức( Method Syntax) 6
4 Cấu trúc của biểu thức truy vấn: 7
II LINQ TO SQL III Mô hình hóa CSDL dùng LINQ TO SQL IV Truy vấn LINQ TO SQL 1. Tìm hiểu lớp DataContext 10
2. Form Quản Lý Nhân Viên và minh họa cho thêm, xóa, sửa 10
3. Lựa chọn( Select) 12
4. Cách chèn hàng vào trong CSDL( LINQ TO SQL) 13
5. Cách cập nhật hàng trong CSDL( LINQ TO SQL) 14
6. Cách xóa 1 hàng trong CSDL( LINQ TO SQL) 15
7. Từ khóa Var 16
8. Filtering(Lọc) 16
9. Ordering(Thứ tự) 17
10 Grouping(Gom nhóm) .17
11 Kết hợp nhiều yếu tố đầu vào .18
12 Lựa chọn 1 tập hợp con của mỗi phần tử nguồn .20
13 Biểu thức Lambda .21
14 Giới thiệu 1 định danh bằng cách sử dụng Let .21
15 Chuyển đổi trong mệnh đề Select .22
16 Từ khóa Join .22
Trang 4V Cách kết nối một cơ sở dữ liệu (LINQ to SQL)
1. Cách tạo cơ sở dữ liệu (LINQ to SQL) 25
2. Cách xóa CSDL: 25
VI LINQ to DataSet VII Lấy dữ liệu dùng Stored Procedure 1. Các bước ánh xạ và gọi SPROC dùng LINQ to SQL 29
2. Cách ánh xạ một SPROC vào một DataContext của LINQ 29
3. Cách gọi SPROC mới được tạo: 31
4. Cách sử dụng SPROC để thực hiện Insert/Update/Delete: 32
5. Ví dụ Thêm một Order bằng cách dùng SPROC: 32
PHẦN 2 : ỨNG DỤNG QUẢN LÝ THƯ VIỆN I. Bài toán quản lý thư viện 37
II. Phát hiện thực thể - Sơ đồ Use Case 38
III. Một số quy trình 41
IV. Tạo cơ sở dữ liệu (PDM) 43
V. Thiết kế menu 44
VI. Thiết kế màn hình 46
VII. Cài đặt 47
VIII Minh họa linq với một From cụ thể 50
IX. Hướng dẫn demo chương trình 57
PHẦN 3 : ĐÁNH GIÁ ƯU KHUYẾT I Ưu điểm 60
II Khuyết điểm 60
III Hướng phát triển tương lai 60
Trang 5Kết luận – Tài liệu tham khảo
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Trang 6PHẦN 1 : TÌM HIỂU VỀ LINQ
I LINQ
1. Khái niệm
LINQ là một tính năng mới của C # và NET Visual Basic tích hợp vào các
ngôn ngữ này khả năng truy vấn dữ liệu Trong một hệ thống cơ sở dữ liệu quan hệ, dữ liệu được tổ chức vào bảng bình thường hóa độc đáo, và
truy cập với một ngôn ngữ truy vấn rất đơn giản nhưng mạnh mẽ như
SQL
Trong một chương trình, như trái ngược với một cơ sở dữ liệu, tuy nhiên, dữ
liệu được lưu trữ trong các đối tượng lớp hoặc cấu trúc
mà là tất cả rất khác nhau Kết quả là, đã có không có ngôn ngữ truy
dữ liệu từ cấu trúc dữ liệu Phương pháp lấy dữ liệu từ các đối tượng đã
được thiết kế như là một phần của chương trình Với sự ra đời của
LINQ trong C # 3.0, tuy nhiên, khả năng để truy vấn các bộ sưu tập của các đối tượng đã được thêm vào ngôn ngữ Sau đây là những đặc điểm quan trọng của LINQ:
• LINQ là viết tắt của Language Integrated Query
• LINQ là một mở rộng của NET Framework cho phép bạn truy vấn bộ sưutập dữ liệu trong một cách tương tự như truy vấn cơ sở dữ liệu
• C # 3.0 bao gồm các phần mở rộng tích hợp LINQ vào ngôn ngữ, cho phépbạn truy vấn dữ liệu từ cơ sở dữ liệu, bộ sưu tập của các đối tượng chươngtrình, và các tài liệu XML
Đoạn lệnh sau đây cho thấy một ví dụ đơn giản của việc sử dụng LINQ
Trang 72. Mô hình kiến trúc LINQ
3. Cú pháp truy vấn( Query Syntax) và cú pháp phương thức( Method Syntax).
Có hai hình thức cú pháp, bạn có thể sử dụng khi viết các truy vấn LINQ là cú
Bạn cũng có thể kết hợp cả hai hình thức trong một truy vấn đơn Microsoft
khuyến cáo sử dụng cú pháp truy vấn bởi vì nó dễ đọc hơn, và rõ ràng
hơn
nêu rõ ý định truy vấn của bạn, và do đó dễ xảy ra ít lỗi.
Đây là ví dụ về 2 cú pháp và việc kết hợp 2 cú pháp:
Trang 84. Cấu trúc của biểu thức truy vấn
Ví dụ:
Trang 9II 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 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ậpnhật/thêm/xóa dữ liệu từ đó
Giống như cơ sở dữ liệu SQL, LINQ To SQL có hỗ trợ transactions, views, and
stored procedures
III Mô hình hóa CSDL dùng LINQ to SQL
Ví dụ dùng CSDL QL_BANHANG như hình dưới
Trang 10Visual 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ùngLINQ to SQL.Bằng cách dùng trình thiết kế LINQ to SQL, tôi có thể dễdàng tạo một mô hình cho CSDL QLBANHANG giống như dưới đây Saukhi đã kết nối với CSDL, bạn click phải chuột vào Project vidu, chọn AddItems
Khi đó, trình thiết kế LINQ sẽ hiện ra cho bạn Bạn chỉ việc kéo những tables
tương ứng và thả vào màn hình design Relationship cũng tạo ra cho bạn
Trang 11Mô hình LINQ to SQL ở trên định nghĩa 5 lớp thực thể:
KHACHHANG,HOADON, CHITIETHD, HANGHOA, NHANVIEN Các thuộctí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 instance 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ữabố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 đượctạo ra dựa trên các mối quan hệ primary-key/foreign-key trong CSDL Hướng củamũ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
IV Truy vấn LINQ to SQL
1. Tìm hiểu lớp DataContext
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ớpDataContext được tạo sẽ có các thuộc tính để biểu diễn mỗi bảng được mô hìnhhóa từ CSDL Lớp DataContext tương đương với lớp SqlConnection trongADO.NET
Ví dụ ở đây mình đặt tên LINQ to SQL là BANHANG.dbml thì sẽ có
BANHANGDataContext tương ứng
2. Form Quản Lý Nhân Viên và minh họa cho việc thêm, xóa ,sửa Nhân Viên.
Trang 12• Câu lệnh thêm nhân viên
• Câu lệnh xóa Nhân Viên
Trang 13• Câu lệnh Sửa Nhân Viên
Để biết rõ hơn về lệnh thêm, xóa , Sửa chúng ta tiếp tục tìm hiểu kỹ hơn ở cácphần sau
3. Lựa chọn(Select)
Lựa chọn là đạt được bằng cách chỉ viết một truy vấn LINQ trong ngôn ngữ lậptrình của bạn và sau đó xử lý truy vấn để lấy kết quả LINQ to SQL tự dịch tất cảcác hoạt động cần thiết vào các hoạt động SQL cần thiết mà bạn đang làm quen
Ví dụ sau, công ty, tên công ty của khách hàng từ London được truy lục và hiển thị
Trang 144. Cách chèn hàng vào trong cơ sở dữ liệu (LINQ to SQL)
Bạn chèn hàng vào một cơ sở dữ liệu bằng cách thêm các đối tượng vào bảngLINQ to SQL (TEntity) và sau đó gửi các thay đổi đối tới cơ sở dữ liệu LINQ choSQL dịch vào những thay đổi của bạn thích hợp lệnh INSERT SQL thích hợp Cácbước sau tóm tắt một Dưới đây là những bước giả định rằng một hợp lệDataContext kết nối bạn vào cơ sở dữ liệu Northwind
Trang 155. Cách cập nhật hàng trong cơ sở dữ (LINQ to SQL)
Bạn có thể cập nhật hàng trong một cơ sở dữ liệu bằng cách thay đổi giá trị thànhviên của các đối tượng kết hợp với bảng LINQ to SQL (TEntity) và sau đó gửi cácthay đổi đối vào cơ sở dữ liệu LINQ cho SQL chuyển đổi sự thay đổi vào tronglệnh SQL
Ví dụ sau thay đổi các giá trị của ShipName và ShipVia trong kết quả của đốitượng Object Cuối cùng, các thay đổi với các thành viên các giá trị được gửi đến
cơ sở dữ liệu như là thay đổi trong ShipName và ShipVia cột
Trang 166. Cách xóa hàng trong cơ sở dữ liệu (LINQ to SQL)
Tiến trình để xóa 1 hàng trong CSDL:
• Truy vấn cơ sở dữ liệu cho các hàng sẽ được xóa
• Gọi các phương pháp DeleteOnSubmit
• Gửi các thay đổi tới cơ sở dữ liệu
Ví dụ:
Trong ví dụ sau, các khách hàng có ID khách hàng là 98128 là lấy từ các cơ sở dữliệu Sau đó, sau khi xác nhận rằng các hàng củakhách hàng được gọi ra, lệnhDeleteOnSubmit được gọi là để loại bỏ các đối tượng từ các bộ sưu tập Cuốicùng, SubmitChanges được gọi là để gửi lệnh xóa tới cơ sở dữ liệu
Trang 177. Từ khóa Var
8. Filtering( Lọc)
Có lẽ các hành động truy vấn phổ biến nhất là một bộ lọc để áp dụng trong cácmẫu của một biểu thức logic Boolean Các bộ lọc giúp các truy vấn trả về duy nhấtcác phần tử cho các biểu thức là đúng Kết quả là kết quả được sử dụng mệnh đềwhere Các bộ lọc có hiệu lực xác định các yếu tố đó để loại trừ từ các nguồn liêntục Trong ví dụ sau, chỉ những khách hàng có địa chỉ ở London sẽ được trả về
var queryLondonCustomers = from cust in customers
where cust.City == "London"
select cust;
Trang 18Bạn có thể sử dụng quen ngôn ngữ C# với các biểu thức logic AND và OR để vậnhành áp dụng như nhiều bộ lọc trong mệnh đề where Ví dụ, chỉ trả về các kháchhàng có địa chỉ tại"London" và có tên là "Devon" bạn sẽ viết đoạn mã sau đây:
where cust.City== "London" && cust.Name ==
nó sẽ so sánh và thực hiện sắp xếp theo thứ tự chữ cái từ A đến Z
Trang 19foreach (Customer customer in
customerGroup) {
Console.WriteLine( " {0}" , customer.Name);
} }Khi bạn kết thúc một truy vấn với mệnh đề group, các kết quả của bạn sẽ sẽ đượctrả về một danh sách từ các danh sách Mỗi phần tử trong danh sách là một đốitượng có một Key thành viên và danh sách các phần tử đó là nhóm chứa khóa này.Khi bạn lặp qua một truy vấn mà kết quả là một nhóm có trình tự, bạn cần phải sửdụng một vòng lặp foreach Nếu bạn cần phải tham khảo các kết quả thi hành củamột nhóm, bạn có thể sử dụng từ khóa into để tạo ra một định danh có thể đượcthêm vào câu truy vấn Dưới đây là những truy vấn trả lại chỉ những nhóm có chứanhiều hơn hai khách hàng:
var custQuery =
from cust in customers group cust by cust.City into custGroup where custGroup.Count() > 2
orderby custGroup.Key select custGroup;
11.Kết hợp nhiều yếu tố đầu vào
Bạn có thể sử dụng một truy vấn LINQ để tạo ra một trình tự đầu ra có chứa cácphần tử từ nhiều hơn một trình tự đầu vào Ví dụ sau cho thấy làm thế nào để kếthợp hai cấu trúc dữ liệu trong bộ nhớ, nhưng cùng một nguyên tắc có thể được ápdụng để kết hợp các nguồn dữ liệu từ XML hoặc SQL hoặc DataSet Ví dự sau chothấy điều đó:
Trang 2112 Lựa chọn một tập hợp con của mỗi phần tử nguồn
Để chọn chỉ cần một thành viên của các phần tử nguồn nguyên tố, sử dụng thaotác chấm Trong ví dụ sau, giả định rằng một đối tượng Customer có chứa một sốthuộc tính public bao gồm một chuỗi có tên City Khi thực hiện, truy vấn này sẽcho ra một trình tự các chuỗi đầu ra
var query = from cust in Customers select cust.City;
Để tạo các phần tử có chứa nhiều hơn một thuộc tính các phần tử nguồn, bạn cóthể sử dụng một đối tượng với một đối tượng có tên hoặc một loại vô danh Ví dụsau cho thấy việc sử dụng một ẩn danh để đóng gói hai loại thuộc tính từ mỗi phầntử
(input parameters) => expression
Dấu mở và đóng ngoặc là tùy chọn trong trong trường hợp chỉ có 1 tham số,ngược lại nó là bắt buộc Nếu có nhiều hơn 1 tham số thì chúng sẽ được phân cáchbằng dấu phẩy (,) Kiểu của các tham số có thể được khai báo tường minh hoặckhông, 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.Length (lỗi, vì trình dịch không thể biết được s là gì)
bạn khải khai báo như sau:
Trang 22int f(int x) {
return x * x;
}
Một biểu thức lambda có thể được dùng để tạo các delegate giống như sau:
int j = myDelegate(5);
Toán tử => có cùng độ ưu tiên như phép gán = và được xét từ phải sang trái, dovậy câu lệnh d = x => x * x sẽ có ý nghĩa khác với x => d = x * x Ở câu lệnh thứnhất, d sẽ có kiểu delegate và nó đại diện cho biểu thức lambda x => x*x, câu lệnhthứ 2 hoàn toàn là 1 biểu thức lambda, trong đó d sẽ mang giá trị của bình phươnggiá trị được truyền vào
Các biểu thức lambda thường được dùng trong các câu truy vấn LINQ như là cáctham số của các mệnh đề truy vấn kiểu như Where
14.Giới thiệu một định danh bằng cách sử dụng let
Bạn có thể sử dụng từ khóa let để giới thiệu cho một định danh cho bất kỳ biểuthức trả về trong biểu thức truy vấn.Định danh này có thể là một sự tiện nghi, nhưtrong ví dụ sau đây, hoặc nó có thể nâng cao hiệu quả sự thực thi bằng cách lưu trữcác kết quả của một biểu thức để nó không phải được tính toán nhiều lần
Trang 2315.Để chuyển đổi hoặc dự án trong mệnh đề select
Nó rất phổ biến cho một truy vấn để tạo ra một trình tự các phần tử khác nhau từcác phần tử trong các trình tự nguồn Xóa hay ghi chú cho truy vấn trước đó củabạn và thực hiện vòng lặp, và thay thế nó với đoạn mã sau đây Lưu ý rằng cáctruy vấn sẽ trả về một trình tự của các chuỗi, và thực tế này được phản ánh trongvòng lặp foreach
Để tạo ra một trình tự của Students có tổng điểm là cao hơn mức trung bình,
cùng với Student ID bạn có thể sử dụng một loại vô danh trong câu lệnh select:
16 Từ Khóa Join
Bạn có 2 lựa chọn khi truy vấn nhiều bảng có quan hệ với nhau: lệnh Join hay kýhiệu dấu chấm Cả hai cách đều hiệu quả, nhưng cách thứ hai dễ dàng kiểm trahơn.Trong LiNQ to SQL, bạn cũng có thể liên kết nhiều bảng bằng việc dùng từkhóa Join
Trang 24IEnumerable dùng cho hầu hết các collectiton của Net framework.
IQueryable dùng cho LINQ to SQL, Entities, hoặc XML objects
IEnumerable dùng để thực hiện các công việc nặng như filter, map, (local)IQueryable đẩy gánh nặng cho provider (server)
ví dụ:
//sau khi provider xử lý, trả về những customer có city = "London"
IQueryable<Customer> custs = from c in db.Customers
where c.City == "London"
select c;
//sau khi provider trả về tất cả customer Framework mới lọc ra những
customer có city = "London"
IEnumerable<Customer> custs = from c in db.Customers
where c.City == "London"
select c;
V Cách kết nối một cơ sở dữ liệu (LINQ to SQL)
DataContext là đường dẫn chính mà bạn kết nối với một cơ sở dữ liệu,sau đó bạntruy lục dữ liệu từ đó và gửi trở lại các thay đổi Bạn chỉ cần sử dụng DataContexttương tự như khi bạn sử dụng một ADO.NET SqlConnection Trong thực tế, cácDataContextđược khởi động với một kết nối hoặc kết nối chuỗi mà bạn cung cấp.Mục đích của DataContext là để dịch các yêu cầu cho các đối tượng vào các truyvấn của SQL để dựa trên các cơ sở dữ liệu, và sau đó thu thập các đối tượng rakhỏi các kết quả DataContext cho phép Language-Integrated Query (LINQ) bằngcách thực thi các mô hình tổ chức các toán tử truy vấn chuẩn chẳng hạn như mệnh
đề “Where” và “Select”
Ví dụ
Trong ví dụ sau, các DataContext được sử dụng để kết nối với các cơ sở dữ liệumẫu Northwind và để truy lục lại hàng của khách hàng là người sống ở London
Trang 251. Cách tạo cơ sở dữ liệu (LINQ to SQL)
Các lớp có các thuộc tính được mô tả vể cấu trúc của bảng và cột dữ liệu liênquan Bạn có thể sử dụng thông tin này để tạo mới các trường cơ sở dữ liệu Khibạn gọi phương thức CreateDatabase trên DataContext, LINQ to SQL để xây dựngmột cơ sở dữ liệu mới với một cơ cấu xác định bởi các đối tượng
Bạn có thể sử dụng tính năng này trong bất kỳ kịch bản nào, đặc biệt là khi đượcbiết đến như là một nhà cung cấp dịch vụ dữ liệu ví dụ như SQL Server 2005Express:
Bạn đang xây dựng một ứng dụng tự động cài đặt trên một hệ thống của kháchàng
Bạn đang xây dựng mộtứng dụng dành cho Client mà cần lưu cơ sở dữ liệu cục bộlưu trong trạng thái ngoại tuyến
Bạn cũng có thể sử dụng CreateDatabase với SQL Server bằng cách sử dụng mộttập tin mdf hay chỉ là định mục tùy thuộc vào chuỗi kết nối LINQ to SQL sửdụng chuỗi kết nối để xác định các cơ sở dữ liệu được tạo ra và cách nó được tạotrên máy chủ
Trang 26Ví dụ: Đoạn mã sau đây cung cấp một ví dụ về cách bạn sẽ tạo ra một cơ sở
dữ liệu mới có tên MyDVDs.mdf.
2. Cách xóa CSDL:
ví dụ sau đây kiểm tra xem CSDL đã tồn tại chưa Nếu có thì xóa nó đi , chưa cóthì tạo mới CSDL
Trang 27VI LINQ to DataSet:
Truy vấn LINQ to DataSet không khác so với các truy vấn LINQ khác Có 2 cách
cơ bản để viết LINQ toDataSet: dùng cú pháp truy vấn hoặc phương thức truy vấn
cơ bản.Ví dụ sau dùng DataAdapter làm cầu nối giữa dữ liệu và DataSet, một biểuthức LINQ được định nghĩa và được dùng để truy vấn DataSet cho tất cả orderstrong năm 2003
Trang 28
Kết quả sau khi chạy chương trình:
VII Lấy dữ liệu dùng Stored Procedure
LINQ to SQL đi cùng với NET 3.5 rất mềm dẻo, và có thể được dùng để tạo cáclớp mô hình dữ liệu, trong đó các đối tượng không phụ thuộc vào cấu trúc CSDLphía dưới, và có thể xử lý các phép kiểm tra logic cũng như xác thực tính hợp lệcủa dữ liệu mà không phụ thuộc vào việc dữ liệu sẽ được lưu nạp dùng các câuSQL động hay thông qua các SPROCs
Trong những phần trước, tôi đã thảo luận cách bạn có thể viết các biểu thức truyvấn LINQ cho một mô hình dữ liệu LINQ to SQL dùng đoạn mã như sau:
Trang 29Khi bạn viết các biểu thức LINQ kiểu như vậy, LINQ to SQL sẽ thực thi các câulệnh SQL động để bạn có thể lấy về các đối tượng khớp với câu truy vấn của bạn.
Như bạn đã được học trong bài viết này, bạn cũng có thể dùng các SPROCs trongCSDL trong lớp DataContext, nó cung cấp một cách khác để lấy về các đối tượngProducts bằng cách gọi thủ tục tương ứng:
Trang 301. Các bước ánh xạ và gọi SPROC dùng LINQ to SQL
Trong phần 2, tôi đã nói về cách dùng LINQ to SQL designer để tạo ra một môhình dữ liệu LINQ to SQL như dưới đây:
Ở cửa sổ trên có chứa 2 cửa sổ con, cửa sổ bên trái cho phép chúng ta địnhnghĩa mô hình dữ liệu sẽ
ánh xạ vào CSDL, cửa sổ bên phải cho phép ánh xạ các thủ tục và hàm vào đối tượng DataContext,
điều này cho phép chúng ta có thể thay thế các câu SQL động trong việc lấy dữ liệu về
Ở cửa sổ trên có chứa 2 cửa sổ con, cửa sổ bên trái cho phép chúng ta định nghĩa
mô hình dữ liệu sẽ ánh xạ vào CSDL, cửa sổ bên phải cho phép ánh xạ các thủ tục
và hàm vào đối tượng DataContext, điều này cho phép chúng ta có thể thay thế cáccâu SQL động trong việc lấy dữ liệu về
2. Cách ánh xạ một SPROC vào một DataContext của LINQ
Để ánh xạ một SPROC vào lớp DataContext, trước tiên hãy mở cửa sổ ServerExplorer trong VS 2008 và mở danh sách các SPROC trong CSDL:
Trang 31Để ánh xạ vào SPROC ở trên vào DataContext, bạn có thể kéo/thả nó từ cửa sổServer Explorer lên trên cửa sổ LINQ to SQL designer Việc này sẽ làm tự độngsinh ra một thủ tục trong lớp DataContext của LINQ to SQL như dưới đây: