Bước 3: Thêm một Order bằng cách dùng SPROC

Một phần của tài liệu LINQ tiếng việt (Trang 83 - 87)

Bài 7 : Cập nhật dữ liệu dùng Stored Procedure

13. Bước 3: Thêm một Order bằng cách dùng SPROC

Chúng ta sẽ bắt đầu chuyển mơ hình dữ liệu sang dùng SPROC, bắt đầu từ đối tượng Object.

Đầu tiên, chúng ta đến cửa sổ "Server Explorer" mở rộng nhánh Stored Procedures trong CSDL của chúng ta, và sau đó nhấn phải chuột và chọn "Add New Stored Procedure":

LINQ to SQL Tutorial

84

Sau đó ta tạo thêm một thủ tục có tên "InsertOrder" có nhiệm vụ chèn thêm một bản ghi mới vào bảng Orders:

Hãy chú ý cách SPROC định nghĩa tham số OrderID như một tham số dạng OUTPUT. Đó là vì cột OrderID trong CSDL là cột tự tăng mỗi khi thêm một bản ghi mới vào. Người gọi sẽ truyền giá trị NULL khi gọi nó - và thủ tucjnafy sẽ trả về giá trị của OrderID mới được tạo ra (bằng cách gọi hàm SCOPE_IDENTITY() ỏ cuối thủ tục).

Sau khi tạo ra SPROC, chúng ta sẽ mở LINQ to SQL designer của lớp truy cập dữ liệu. Như tơi đã nói trong bài 6, chúng ta có thể kéo/thả các SPROC từ Server Explorer lên trên màn hình chính của trình thiết kế. Chúng ta cũng sẽ làm điều tương tự với thủ tục InsertOrder vừa được tạo:

85

Bước cuối cùng là cấu hình lại để lớp truy cập dữ liệu dùng thủ tục SPROC khi chèn các đối tượng Order mới vào trong CSDL. Chúng ta có thể là điều này bằng cách chọn lớp Order trong cửa sooe LINQ to SQL designer, và sau đó chuyển đến bảng thuộc tính và nhấn nút 3 chấm (...) ở mục Insert để chọn thao tác tương ứng:

LINQ to SQL Tutorial

86

Ở trên, nếu bạn chọn chế độ mặc nhiên ("Use Runtime") thì LINQ to SQL sẽ tính tốn và sinh ra câu lệnh SQL động để thực hiện các thao tác tương ứng. Chúng ta có thể thay đổi bằng cách nhấn chuột vào Customize và chọn thủ tục InsertOrder từ danh sách các SPROC:

LINQ to SQL sẽ hiển thị các tham số của thủ tục mà ta đã chọn, và cho phép ánh xạ các thuộc tính của lớp Order và các tham số của InsertOrder. Mặc nhiên, LINQ to cũng tự động xác định các tham số tương ứng theo tên, tuy nhiên bạn vẫn có thể sửa lại nếu muốn.

87

Nhấn vào nút Ok là xong. Giờ đây bất cứ khi nào một đối tượng Order được thêm vào DataContext và phương thức SubmitChanges() được gọi, thủ tục InsertOrder sẽ được thực thi thay cho câu lệnh SQL động.

Quan trọng: Mặc dù hiện tại chúng ta đã dùng SPROC để cập nhật, phương thức "OnValidate" của Order mà chúng ta đã tạo trước đây (trong bước 1 của bài viết này) để kiểm tra tính hợp lệ của đối tượng Order sẽ vẫn được thực thi trước khi bất kỳ thay đổi nào được thực hiện. Do vậy chúng ta sẽ có một cách rõ ràng để xử lý và kiểm tra các quy tắc, và có thể dùng lại một cách dễ dàng mà không phụ thuộc vào việc chúng ta dùng SQL động hay dùng SPROC.

Một phần của tài liệu LINQ tiếng việt (Trang 83 - 87)

Tải bản đầy đủ (PDF)

(103 trang)