Định nghĩa các lớp mô hình dữ liệu (LINQ to SQL phần 2)
Trong phần một,i đã thảo lun về “LINQ to SQL là gì” và cung cấp một
cái nhìn cơ bản về những trường hợp chúng ta có thể sử dụng nó.
Trong bài viết đầu tiên, tôi cũng đã cung cấp các đoạn code mu để biểu
din cách x dữ liu dùng LINQ to SQL, bao gồm:
Cách truy vn dữ liu
Các cập nhật dữ liệu
Cách chèn và tạo quan hệ các dòng trong một CSDL
Cách xóa các dòng trong một CSDL
Cách gọi một thủ tc
Cách lấy dữ liu và phân trang trên server
Tôi đã thực hin tất cả các thao tác dữ liu đó bằng cách dùng một mô hình
dữ liệu LINQ to SQL giống như dưới đây:
Trong bài này, tôi sẽ đi vào chi tiết cách tạo ra một mô hình dữ liệu LINQ to
SQL giống như trên.
LINQ to SQL, cũng như LINQ to SQL, tất cả các tính năng khác mà tôi
đã nói đến trong loạt bài này sẽ đượccoi như một phần của .NET 3.5 và
Visual Studio “Orcas” (nay là Visual Studio 2008).
Bạn có thể làm theo tất cả các bước dưới đây bằng cách tải về hoặc Visual
Studio 2008 hoặc Visual Web Developer Express. Cả hai đềuthể được
cài đặt và dùng đồng thời với Visual Studio 2005.
Tạo ra một mô hình dữ liệu LINQ to SQL
Bạn có thể thêm một mô hình dữ liệu LINQ to SQL và một dự án ASP.NET,
Class Library hay Windows bằng cách dùng tùy chọn “Add New Item” bên
trong Visual Studio và chọn “LINQ to SQL”:
Việc chọn mục “LINQ to SQL” sẽ khởi chạy LINQ to SQL designer, và cho
phép bạn mô hình hóa các lớp mà nó biểu din một CSDL quan hệ. Nó cũng
sẽ tạo ra một lớp kiuDataContext”, trong đó có các thuộc tính để biểu
din mỗi bảng mà chúng ta mô hình hóa trong CSDL, cũng như các phương
thức cho mỗi Stored Procedure mà chúng ta mô hình hóa. Như tôi đã mô tả
trong phần 1 ca loạt bài này, lớp DataContext là thành phần trung tâm của
mô hình, toàn bộ các thao tác truy vấn hoặc cập nhật dữ liu đều được thực
hin thông qua lớp này.
Dưới đây là ảnh chụp màn hình của một của sổ thiết kế LINQ to SQL,
cũng là cái mà bạn sẽ thấy ngay khi tạo ra một hình dữ liệu LINQ to
SQL:
Các lớp thực th
LINQ to SQL cho phép bạn mô hình hóa các lớp ánh xvào CSDL. Các lớp
này thường được là “Entity Class” (lớp thực thể) và các instance của nó
thường được gọi là “Entity” (thực thể). Các lớp entity ánh xạ vào các bảng
bên trong một CSDL. Các thuộc tính của các lớp thông thường ánh xạ vào
các cột trong bảng. Mỗi instance của một lớp thực thể biểu din một dòng
trong bảng.
Các lớp thực thể trong LINQ to SQL không cần phải kế thừa từ một lớp đặc
biệt nào khác, điu đó cho phép bạn có thể cho phép chúng thừa kế từ bất cứ
đối tượng nào bạn muốn. Tất cả các lớp được tạo ra dùng LINQ to SQL
designer đều được định nghĩa như “partial class nghĩa là bạn có thể
viết tm code để thêm vào các thuộc tính, phương thức và sự kiên cho
chúng.
Không giống như chức năng DataSet/TableAdapter có trong VS 2005, khi
dùng LINQ to SQL designer, bạn không cần chỉ ra câu truy vấn SQL được
dùng để tạo ra mô hình và lớp truy xuất dữ liu.
Thay vào đó, bạn tập trung chủ yếu vào việc định nghĩa các lớp thực thể,
cách chúng ánh xvào CSDL, và mối quan hệ giữa chúng. Trình LINQ to
SQL c thể mà bạn dùng sẽ đảm bảo việc sinh ra các lnh SQL thích hợp
vào lúc chạy khi bạn tương tác và làm việc với các thực thể dữ liệu. Bạn
thể dùng cú pháp truy vấn LINQ để chỉ ra cách bạn muốn truy vấn dữ liệu.
Tạo các lp thực thể từ CSDL
Nếu đã có cấu trúc cho CSDL, bạn có thể dùng nó để tạo các lớp thực th
LINQ to SQL một cách nhanh chóng.
Các dễ dàng nhất để làm điều này là mở CSDL trong cửa sổ Server Explorer
bên trong Visual Studio, chọn các table và view mà bạn muốn mô hình hóa,
và kéo thả chúng lên trên của sổ LINQ to SQL designer.
Khi bạn thêm 2 bảng (Categories and Products) và 1 view (Invoices) từ
CSDLNorthwind” vào cửa sLINQ to SQL designer, bạn sẽ có thêm 3 lớp
thực thể được tạo ra một cách tự động: