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

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

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 (471.97 KB, 10 trang )

Làm việc với LINQ trên Visual Studio 2008
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.
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
Simpo PDF Merge and Split Unregistered Version -
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.

Simpo PDF Merge and Split Unregistered Version -
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ó đã
Simpo PDF Merge and Split Unregistered Version -
đượ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
Simpo PDF Merge and Split Unregistered Version -
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"
" />tml1-transitional.dtd">
<html

xmlns=" />" >
<head runat="server">
<title>LINQ Example</title></head>
<body>
<form id="frmLINQTest"
Simpo PDF Merge and Split Unregistered Version -
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ữ
Simpo PDF Merge and Split Unregistered Version -
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
Simpo PDF Merge and Split Unregistered Version -
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:
Simpo PDF Merge and Split Unregistered Version -
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()
Simpo PDF Merge and Split Unregistered Version -
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.

Simpo PDF Merge and Split Unregistered Version -

×