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 TO SQL TUTORIAL (Trang 82 - 86)

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":

Server Explorer a x

a % %

B 0 3 Data Connections

S - scottguvista4.Northwind.dbo g]- __1 Database Diagrams

É Tables

+ Eh

□ Views

□ I B I S "

+ J CustOrde Add New Stored Procedure

_ i —

J CustOrde j Refre, h T J C u st0.d e ^

Œ) UH Em ployeô ' K

I f t p t í ” n c t n m n p t x i k

s

JS:

GetCustomDetails

) D GetCustomerCompanyName C l GetCustomerDetails

n GetCustomerNamed J GetProductsAndCustomers

□ GetProductsByCategory GetProductsByCateqcryNarne

^ S o lu tio n Explorer '^Server Explorer

Sau dú ta tao them mửt thỹ tue cú tờn "InsertOrder" cú nhiờm vu chốn thờm mot bàn ghi m ai vào bâng Orders:

dbo.lnsertPioduct...vista4.Northwind) dboJnsertO rden _rót*4.Northw¡nd)* Default.aspx.ci NorthwmdDataContext.es c re a te pro cedure d b o .In se rtO rd e r

C © orderid in t o u tp u t, 4 .

©CustomerlD n c h a r (5 ),

©EmployeelD i n t ,

©orderoate d atetim e,

©RequiredDate d atetim e,

©ShippedDate d atetim e,

© sh ip via i n t ,

© Freight money,

©ShipName n v a rc h a r( 4 0 ) ,

©ShipAddress n v a rc h a r( 6 0 ) ,

© S h ip city n v a rc h a r( 1 5 ) ,

©shipRegion n v a rc h a r(1 5 ) ,

© shippostalcode n v a rc h a r(10) ,

© Shipcountry n v a rc h a r(1 5 )

)

in s e r t in t o LdDoj. LO rdersj (.LC u stom eriD j, LEmp lo yeeiD j , LOrderDatej , LR e q u ire d D a te j, [sh ip p e d D a te ], [ s h ip v i a ] , [ F r e ig h t ] , [shipName], [s h ip A d d re s s ], [ s h i p c i t y ] , [s h ip R e g io n ], [S h ip p o s ta lc o d e ], [S h ip c o u n try ])

v a l u e s (©customeriD, ©EmployeelD, ©orderDate, ©RequiredDate, ©ShippedDate,

^ sh ip v ia , © Freig h t, ©ShipName, © shipAddress, © s h ip c ity , ©ShipRegion,

^Shippostalcode, ©Shipcountry)]

set ©orderiD - c ast(s c o p e_i d e n t i t y() a g i n t)

Hay chu ÿ each SPROC dinh nghla tham sô OrderlD nhu mot tham sô dang OUTPUT. Dó là vi côt OrderID trong CSDL là cụt tu tàng mụi khi thờm mot bàn ghi múd vào. N guài goi sở truyờn già tri NULL khi goi nụ - và thỹ tucjnafy sở trà vờ già tri cỹa OrderlD m ai duỗc tao ra (bang càch goi hàm

ertOrder. ...vistai.Northwind)*

operties Categor/D

^3* CategotyNa me 'is* Description á * Picture

operties

■J* OrderiD ấ ProductlD

UnitPrice

^3* Quantity

‘4* Discount

♦ InsertOrder (ref System Jnt32

“i j

% 'ợ

E - ( jĩ Data Connections >

1 Jy scottguvista4.Northwind

♦. __J Database Diagrams

¿) ^3 Tables

® _ j Views

-1_J Stored Procédures

’ợTI CustOrderHist T1 CustOrdersDetail

"T1 CüstOrdersOrders D Employée Sales b) J TU GetCustomDetaili

~J GetCustomerCorr

~T1 GetCustomerDeta 7~1 GetCustomerNanr GetProductsAndC r i GetProductsByCa

n SalesByCategory 2 T e n M o s t Expensi T~n UpdateCustom erợ 71 VariableShapeSan - j SI- ^ 1 VariablebhapeSan

4 3 *

û^j Solution Explorer I ỉậ | Server Explorer

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 LENQ 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:

s Properties ẩ * OrderID

2 ? CustomerlD EmployeelD OrderDate 's ỹ Required Date

^3* ShỉppedDate á * ShipVia

Freight 23* ShipName [ã* ShipAddress

ShipCity ũẫ* ShipRegion

ShipPostalCode ShipCountry

c

c

_Êớ°EiEèèIL- ọ X

O rder Data Class

T~ ).\---

B Code G eneration

Access Public

Inheritance Moc (None)

Name O rder

□ D ata

Source dbo.O rders E .. ẻ. Methods

Delete Use Runtime

1 3 Use Runtime

Update Use Runtime

0

Khi nhấn nút này, cửa số sau sẽ hiện ra để có thể tùy biến hành vi Insert:

Configure 8ehavior I a fTằ"4—1

Select a class and behavior. Then, choose to either let th e system automatically generate code at runtime customize ônth specific insert, update, or delete methods.

Class:

or

Ofdef •

Behavior Insert

w \

f o Use runtime \

Let the system automatically generate insert, update, and delete logic at runtime.

Customize

\ -

Method Arguments Class Properties

OK ] Cancel

Ớ trên, nếu bạn chọn chế độ mặc nhiên ("Use Runtime") thì LINQ to SQL sẽ tính toá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:

Configure Behavior 1

Select a class and behavior. Then, choose to either let the system automatically generate code at runtime or c u s to m iz e w it h s p e c ific insert, u p d a te , o r d e le te m e t h o d s .

Use runtime

Let the system automatically generate insert, update, and delete logic it runtime.

$InsertOrder (ref System Jnt32 orderiO, System.Stnng customers). System .In t32 employeelD. System.DateTime

0

Method Arguments customer®

employeelO fretght orderOate ordertD requiredOate fhipAddresc shipCity shipCountry

Class Properties CustomerlD EmployeeiD Freight

¡OidpID (None) CustomeriD EmpJoyeelD Freight OrderOate RequiredDate ShipAddress

V ShipCity

Jttaüüi

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

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 SubmitChangesO đượ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 TO SQL TUTORIAL (Trang 82 - 86)

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

(102 trang)