Tải bản đầy đủ (.pdf) (5 trang)

Làm việc với LINQ trên Visual Studio 2008 docx

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 (115.85 KB, 5 trang )

Làm việc với LINQ trên Visual Studio 2008

O/R Designer

LINQ và Visual Studio 2008 IDE khiến cho việc lấy dữ liệu trở nên khá
dễ dàng từ một cơ sở dữ liệu SQL Server. Visual Studio bao gồm một
mục khung mẫu có tên gọi LINQ to SQL Classes mà bạn có thể thêm vào
trong dự án. Một tài nguyên dbml được tạo ra khi bạn thêm vào kiểu mục
này với một tên mặc định (mà bạn có thể thay đổi) của
DataClasses1.dbml.

Khi mục đó được bổ sung thì ô O/R Designer sẽ được mở ra bên trong
Visual Studio. Điều này sẽ cho phép bạn kéo và thả các mục cơ sở dữ liệu
(bảng, xem, thủ tục lưu trữ) tới O/R Designer. O/R Designer tạo ra tập tin
dbml, tập tin này sẽ cung cấp kết nối giữa các lớp LINQ to SQL Classes
và các đối tượng cơ sở dữ liệu. O/R Designer đồng thời cũng tạo ra
DataContext và các lớp thực thể.

Có hai khu vực chính bên trong O/R Designer là Entities và Methods.
Khu vực chính của cùng thiết kế dành cho các thực thể như Tables và
Viewa, cùng với sự phân cấp và mọi thứ có liên quan. Ô Methods bao
gồm các thủ tục và chức năng được lưu trữ đã được nối kết tới các
phương pháp của lớp DataContext. O/R Designer hiện thời hỗ trợ SQL
Server 2000, SQL Server 2005 và SQL Express Edition.

Trước đi đi sâu vào xem xét ví dụ, chúng ta hãy cùng tìm hiểu kĩ hơn về
truy vấn LINQ.

Truy vấn

Bạn cần thực hiện ba bước để truy nhập dữ liệu thông qua LINQ: Thu


thập nguồn dữ liệu, tạo các truy vấn và thực hiện truy vấn. Một truy vấn
được dùng để định nghĩa xem dữ liệu nào đã được khôi phục từ nguồn dữ
liệu. Ngoài ra, bạn có thể thao tác dữ liệu thông qua việc sắp xếp, nhóm
và những thứ tương tự. Một truy vấn được lưu trữ trong một biến truy vấn
và được khởi tạo với một biểu thức truy vấn.

Truy vấn có những cú pháp riêng, những cú pháp này mạnh giống với
chuẩn SQL. Một biểu thức truy vấn có ba mệnh đề: from, where và select.
Mệnh đề form định nghĩa nguồn dữ liệu; Mệnh đề select định nghĩa
những cái quay trở lại; Và mệnh đề where (không bắt buộc) giúp bạn làm
rõ hơn một tìm kiếm bao gồm chỉ các dữ liệu phù hợp với tiêu chuẩn nhất
định.
Truy vấn sẽ không được thực hiện cho đến khi nó đã được truy nhập;
Điều này giống như là hoãn lại quá trình thực hiện. Ví dụ tiếp theo sẽ
cung cấp nhanh việc sử dụng truy vấn.

Ví dụ

Tạo một dự án trang web bao gồm một mục LINQ to SQL Classes, mục
này kết nối tới cơ sở dữ liệu chuẩn Northwind trên SQL Server 2000. Một
thực thể được tạo ra cho bảng Customers. O/R Designer tạo ra tập tin
dbml đặt tên là DataClasses1.dbml.

Khi lớp DataContext được tạo ra trên bảng và thủ tục lưu trữ trên cơ sở
dữ liệu Northwind, bạn có thể sử dụng lớp này trong đoạn mã khác. Khi
sử dụng lớp DataContext được tạo, nó phải bao gồm tên với DataContext
được bổ sung vào sau. Trong ví dụ này bạn phải sử dụng tên
DataClasses1DataContext. (Visual Studio IntelliSense hỗ trợ đầy đủ
LINQ và tất cả các lớp của nó, vì vậy bạn có thể dễ dàng tránh được lỗi
cho gõ phím).


Tôi sử dụng ASP.NET WEB Form trong ví dụ sau:
<%@ Page Language="C#" AutoEventWireup="true"
CodeBehind="Default.aspx.cs"
Inherits="LINQTest._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
" />transitional.dtd">
<html xmlns=" >
<head runat="server">
<title>LINQ Example</title></head>
<body>
<form id="frmLINQTest" runat="server">
<div>
<asp:GridView ID="gvCustomers"
runat="server"></asp:GridView>
</div></form></body></html>
Web Form có chứa một trường hợp của điều khiển GridView; Điều khiển
này hiển thị dữ liệu thông qua LINQ. Đoạn mã được đặt bên trong sự
kiện Page_Load, vì vậy dữ liệu sẽ được tải vào khi bạn mở trang web.

Bước đầu tiên bạn sẽ tạo ra một thể hiện của lớp DataContext. Điều này
sẽ cung cấp sự truy nhập cơ sở dữ liệu, vì vậy bạn có thể truy nhập vào
bảng của nó như một thuộc tính của lớp DataContext. Ngay khi lớp
DataContext được tạo ra thì bạn có thể lấy dữ liệu từ đây thông qua một
truy vấn.

Đoạn mã bao gồm một truy vấn kéo mọi bản ghi dữ liệu và các cột từ
bảng Customers. Dữ liệu được sắp xếp bởi cột thứ hai và truy vấn được
thực hiện khi nó tác động lên điều khiển GridView trên trang.

protected void Page_Load(object sender, EventArgs
e) {
DataClasses1DataContext db = new
DataClasses1DataContext();
var customers = from p in db.Customers
orderby 1
select p;
gvCustomers.DataSource = customers;
gvCustomers.DataBind();
}
Đây là đoạn mã tương ứng trên Visual Basic:
Protected Sub Page_Load(ByVal sender As Object,
ByVal e As System.EventArgs) Handles Me.Load
Dim db As DataClasses1DataContext = New
DataClasses1DataContext()
Dim customers As Object
customers = From p In db.Customers Order By 1
Select p
gvCustomers.DataSource = customers
gvCustomers.DataBind()
End Sub
Khi tải trang web, mọi dữ liệu từ bảng Customers sẽ được hiển thị trên
điều khiển GridView.

Như trong ví dụ thì bạn có thể dễ dàng gọi thủ tục lưu trữ trên SQL
Server như là một phương pháp của đối tượng DataContext. Những kết
quả của phương pháp này - thủ tục lưu trữ - có thể được dùng chứa một
điều khiển dữ liệu tương tự như điều khiển mà trước đó sử dụng
GridView, như trong đoạn mã tiếp theo sau đây:
protected void Page_Load(object sender, EventArgs

e) {
DataClasses1DataContext db = new
DataClasses1DataContext();
var top_customers =
db.Ten_Most_Expensive_Products();
gvCustomers.DataSource = top_customers;
gvCustomers.DataBind();
}
Đây là đoạn mã tương ứng trên Visual Basic:
Protected Sub Page_Load(ByVal sender As Object,
ByVal e As System.EventArgs) Handles Me.Load
Dim db As DataClasses1DataContext = New
DataClasses1DataContext()
Dim customers As Object
customers = db.Ten_Most_Expensive_Products()
gvCustomers.DataSource = customers
gvCustomers.DataBind()
End Sub
Những ví dụ đơn giản này đã biểu thị cú pháp truy vấn và cách sử dụng
O/R Designer như thế nào trên Visual Studio 2008. LINQ cho phép bạn
thao tác cập nhật, xóa, thêm (update, delete, add) và đọc dữ liệu.

×