Holden

New Member

Download miễn phí Giáo trình LINQ to SQL Tutorial - Phần Sử dụng asp:LinqDataSource





Chúng ta có thể viết code để gắn nối mô hình dữ liệu vào gridview này (giống như tôi đã làm trong
phần 3), hay tôi có thể làm cách khác là dùng control mới để gắn nối gidview
này với mô hình dữ liệu.
VS 2008 includes build-in designer support to make it easy to connect up our GridView (or any other
ASP.NET server control) to LINQ data. To bind our grid above to the data model we created
earlier, we can switch into design-view, select the GridView, and then select the “New Data
Source ” option within the “Choose Data Source:” drop-down:
Trình thiết kế trong VS 2008 có sẵn khả năng hỗ trợ làm điều này một cách dễ dàng với GridView
(hay bất kỳ control ASP.NET nào khác) vào dữ liệu LINQ. Để gắn nối, chúng ta có thể chuyển sang
chế độ thiết kế, chọn GridView, và sau đó chọn “New Data Source ” bên trong dang sách “Choose
Data Source:”



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

n lệnh trên là hợp lệ nếu chỉ đơn thuần xét từ góc độ ngôn ngữ – nhưng sẽ là không có ý nghĩa
khi bạn lại muốn đặt ngày khách hàng yêu cầu trước ngày đặt hàng.
Tin vui là từ bản LINQ to SQL beta 2, chúng ta có thể thêm vào các quy tắc kiểm tra cho từng thực
thể để tránh các lỗi kiểu như trên bằng cách thêm một lớp partial cho lớp “Order” và hiện thực hóa
hàm OnValidate(), hàm này sẽ được gọi trước khi dữ liệu được đưa vào CSDL. Bên trong phương
thức này, chúng ta có thể truy cập và kiểm tra tất cả các thuộc tính của lớp trong mô hình dữ liệu.
Bên trong cách này, bạn có thể kiểm tra giá trị bất kỳ thuộc tính nào, và thậm chí có thể truy
cập (chỉ đọc) vào các đối tượng liên quan, và có thể phát ra một exception nếu có tồn tại các giá trị
không hợp lệ. Bất kỳ một exception nào được phát ra từ cách OnValidate() sẽ làm cho việc
cập nhật bị hủy bỏ, và hủy bỏ các thay đổi trong transaction.
9. Tùy biến các cách kiểm tra việc thêm/xóa/sửa dữ liệu
Có nhiều lúc bạn muốn thêm các phép kiểm tra khi thêm/xóa/sửa dữ liệu. LINQ to SQL Beta2 cho
phép làm điều này bằng cách cho phép bạn thêm vào một lớp partial để mở rộng lớp DataContext và
sau đó hiện thực hóa các cách để tùy biến các thao tác thêm/xóa/sửa cho các thực thể. Các
thức này sẽ được thực thi tự động khi bạn gọi SubmitChanges() trên lớp DataContext.
LINQ to SQL Tutorial
44
Bạn có thể thêm các phép kiểm tra thích hợp vào bên trong các cách đó – và nếu dữ liệu hợp
lệ, LINQ to SQL sẽ tiếp tục lưu lại các thay đổi vào CSDL (bằng cách gọi cách
“ExecuteDynamicXYZ” của DataContext).
Một trong những điều thú vị là các cách phù hợp sẽ được gọi tự động, không phụ thuộc vào
ngữ cảnh mà đối tượng được tạo/xóa/sửa. Hãy xem ví dụ sau, ở đây tui muốn tạo một Order mới và
kết hợp nó với một Customer đã có:
(Add đã được thay đổi bằng InsertOnSubmit trong phiên bản hiện tại)
Khi tui gọi northwind.SubmitChanges() ở trên, LINQ to SQL sẽ xác định là nó cần lưu lại một đối
tượng Order, và cách InsertOrder sẽ tự động được gọi.
10. Nâng cao: Xem danh sách thay đổi cho Transaction
Đôi khi bạn muốn thêm các quy tắc kiểm tra mà không thể chỉ dựa trên từng thao tác thêm/xóa/sửa
riêng lẻ, thay vào đó bạn phải có thể duyệt qua toàn bộ các thao tác đã thực hiện trong transaction.
LINQ to SQL Tutorial
45
Bắt đầu từ bản Beta2 của .NET 3.5, LINQ to SQL cho phép bạn truy cập vào danh sách này bằng
cách gọi cách DataContext.GetChangeList(). Nó sẽ trả về một đối tượng ChangeList chứa
các tập hợp cho các thao tác thêm/xóa/sửa đã được thực hiện.
Một cách tiếp cận là bạn có thể tạo một lớp thừa kế từ lớp DataContext và override cách
SubmitChanges(). Khi đó bạn có thể lấy ChangeList() cho thao tác cập nhật và thực hiện các phép
kiểm tra cần thiết trước khi thực thi:
11. Xử lý các thay đổi đồng thời với Optimistic Concurrency:
Một trong những vấn đề mà các nhà phát triển phải nghĩ đến trong môi trường đa người dùng là làm
thế nào có thể xử lý các thao tác cập nhật trên các cùng một tập dữ liệu. Ví dụ, đánh giá là có hai người
dùng đang cùng lấy về một đối tượng product bên trong một ứng dụng, và một người đặt lại giá trị
cho ReorderLevel là 0, trong khi người kia đặt lại là 1. Nếu cả hai người dùng đều lưu lại các thay
đổi đó vào CSDL, nhà phát triển cần cân nhắc việc xử lý tranh chấp dữ liệu.
Một cách tiếp cận đơn giản là “let the last writer win” (người cuối cùng là người chiến thắng) – có
nghĩa là những thay đổi bởi người đầu tiên sẽ bị thay đổi mà không biết. Và điều này thường được
coi là một trải nghiệm kém cỏi (và không đúng) – có nghĩa người dùng sẽ cảm giác khó sử dụng.
Một cách tiếp cận khác mà LINQ to SQL hỗ trợ là dùng mô hình optimistic concurrency – khi đó
LINQ to SQL sẽ tự động xác định xem giá trị gốc trong CSDL đã bị thay đổi bở người dùng khác
hay chưa. LINQ to SQL sau đó sẽ cung cấp một danh sách các giá trị bị xung đột để người phát triển
có thể chọn giải pháp xử lý hay có thể yêu cầu người dùng chọn một thao tác nào họ muốn.
tui sẽ nói về cách dùng optimistic concurrency với LINQ to SQL trong các bài viết khác.
12. Dùng SPROCs hay tùy biến logic các câu SQL:
Một trong những câu hỏi mà các nhà phát triển (và đặc biệt là các DBA – các nhà quản trị CSDL),
những người đã từng viết các thủ tục (SPROC) với các câu SQL tùy biến thường hỏi khi nhìn thấy
LINQ to SQL lần đầu tiên là: “làm sao tui có thể kiểm soát hoàn toàn các câu lệnh SQL được thực
thi bên dưới ?”
LINQ to SQL Tutorial
46
Một tin tốt là LINQ to SQL có một mô hình cực kỳ mềm dẻo, nó cho phép các nhà phát triển có thể
thay thế các câu lệnh củaLINQ to SQL bằng các thủ tục insert, update, delete mà họ tự định nghĩa.
Điều thực sự thú vị là bạn có thể bắt đầu bằng cách định nghĩa mô hình dữ liệu của riêng bạn và để
LINQ to SQL tự thực hiện các thao tác thêm/sửa/xóa. Rồi sau đó bạn có thể tùy biến lại mô hình dữ
liệu để thực hiện các thao tác cập nhật với các thủ tục hay các câu SQL của bạn mà không phải thay
đổi bất kỳ đoạn lệnh nào dùng mô hình dữ liệu đó, và cũng chẳng phải thay đổi bất kỳ quy tắc kiểm
tra đã tạo trước đó. Điều này cung cấp khả năng tùy biến rất lớn cho bạn khi xây dựng ứng dụng.
tui cũng sẽ nói kỹ hơn về cách tùy biến mô hình dữ liệu dùng các thủ tục hay câu lệnh SQL trong
một bài viết khác.
LINQ to SQL Tutorial
47
Bài 5: Sử dụng asp:LinqDataSource
Trong bài viết này, tui sẽ khám phá control mới có trong ASP.NET thuộc
phiên bản .NET 3.5. Control này là một datasource control mới cho ASP.NET (giống
ObjectDataSource và SQLDataSource có trong ASP.NET 2.0) cho phép bạn khai báo việc gắn kết
dữ liệu vào mô hình dữ liệu của LINQ to SQL cực kỳ dễ dàng.
1. Ứng dụng mẫu mà chúng ta sẽ xây dựng:
Chương trình web chỉnh sửa dữ liệu đơn giản mà tui sẽ xây dựng qua các bước được mô tả trong bài
này sẽ là một chương trình cho phép nhập/chỉnh sửa dữ liệu cho các sản phẩm trong một CSDL:
Chương trình sẽ hỗ trợ người dùng các chức năng sau:
1. Cho phép người dùng lọc sản phẩm theo phân loại.
2. Cho phép người dùng sắp xếp các sản phẩm bằng cách nhấp chuột lên tiêu đề cột (Name, Price, Units
In Stock, …).
3. Cho phép người dùng phân trang các sản phẩm (10 sản phẩm mỗi trang).
4. Cho phép người dùng chỉnh sửa và cập nhật các chi tiết sản phẩm ngay trên trang.
5. Cho phép người dùng xóa các sản phẩm trong danh sách.
Ứng dụng web này sẽ được xây dựng với một mô hình dữ liệu hướng đối tượng dùng LINQ to SQL.
LINQ to SQL Tutorial
48
Tất cả các quy tắc xử lý và kiểm tra dữ liệu sẽ được xây dựng trong lớp dữ liệu – mà không phải
trong lớp giao diện. Điều này sẽ đảm bảo rằng: 1) một tập các quy tắc xử lý đồng nhất sẽ được dùng
ở tất cả mọi chỗ trong ứng dụng, 2) chúng ta sẽ phải viết ít code mà không cần lặp lại, và 3) có thể dễ
dàng chỉnh sửa/thay đổi các quy tắc xử lý sa...
 

Các chủ đề có liên quan khác

Top