Chung ta se bat dau viec tao ra ung dung bang cach dinh nghla mo hinh du lieu de bieu dien CSDL.
Toi da noi v£ cach tao mot mo hinh du lieu LINQ to SQL dung trinh soan thao co trong VS 2008 trong bai 2. Dudi day la anh chup man hinh cac lap du lieu ma toi co the nhanh chong tao ra dung LINQ to SQ1 designer de mo hinh hoa CSDL “Northwind”:
Northw ind.dbm l*
C a te g o ry
® Properties
? CategorylD 23* CategoryName 2f* Description
2=P Picture
S u p p lie r
Q Properties f 23* Supplier®
2S1 CompanyName 2fp ContactName 2§P ContactTitle 23* Address
^ City 2S* Region
PostalCode 23* Country 23* Phone 23* Fax 2§* HomePage
/
P roduct
® Properties .? 3 * ProductID
23* ProductName 3 * SupplieriD
2lP CategorylD 2"? QuantityPerUnit 23s UnitPrice 23* UnitsInStock
UnitsOnOrder 231 ReorderLevel 2 ? Discontinued
O rd erD etail
® Properties
? ;Sp OrderlD
f-S* ProductID 3 * UnitPrice
Quantity 2S1 Discount
_£2_
r C u s to m e r
~ Properties
>if Custom erlD
2ằp C om panyN am e
2=P C on tactN am e
2§* ContactTitle
2lP A ddress J * City
2=P Region
2§* PostalC ode
2=P Country
Jp P h o n e
"S ’ Fax
O rder
^ Properties
• ằ * P OrderlD f lP C ustom erlD s r EmployeelD O rderD ate
& R equiredD ate a ô Shipped Date
ShipVia 2p Freight s f ShipN am e
ShipA ddress ShipCity a * ShipRegion 3 s ShipP ostalC ode
ShipC ountry
©
Toi se duyet lai mo hinh nay trong buac 5 khi toi them mot so quy tac kiem tra, nhung trong giai doan dau, toi se van dung no (chua chinh sua) de tao giao dien.
Bước 2 ; Tạo danh sách sản phẩm
Chúng ta sẽ bắt đầu phần giao diện bằng cách tạo một trang ASP.NET với một control
<asp:gridview> và dùng css đế định dạng:
Client Objects & Events ▼ (No Events)
<%@ P ag e L a n g u a g e = "v b " A u t o E v e n t W ir e u p = " f a ls e " M a s t e r P a g e F il e = " ~ / S i t e .M
□ < a s p :C o n t e n t I D = " C o n t e n t l" C o n t e n t P la c e H o ld e r ID = ” C o n t e n t P la c e H o l d e r l" r ị] < d iv c l a s s = " p r o d u c t s h e a d e r " >
<h2>Products</h2>
</div>
3 < a s p :G r id V ie w I D = " G r idvie w l" C s s C l a s s = " g r id v i e w "
A l t e r n a t i n g R o w S t y le - C s s d a s s = " e v e n "
r u n a t = " s e r v e r " />
L < / a s p : C o n t e n t >
I I
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), hoặc tôi có thể làm cách khác là dùng control mới <asp:linqdatasource> để 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 die 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 Grid View (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:” :
ll
Column2 1
abc abc í
<
abc 1
abc abc
E3 Common G rid V ie w Tasks Auto Format...
Choose Data Source:
Edit Colum ns...
Add New Colum n...
(None) I (None)
<New data source...>
Add Extender...
Edit Templates
s
Data Source Configuration Wizard
Choose a Data Source Type
W here will the application get data from?
1 ( 3 11 & i < l
Access Database
Database E 3 Object Object Site Map XML File
Use UNQ to connect to a DataContext or object in th e Bin or App_Code directory for th e application.
Specify an 10 for th e data source:
ProductDataSource
OK Cancel
Trinh thiờt kờ <asp:linqdatasource> sở hiờn thi tiờp cõc lap DataContext cua LINQ to SQL mà vrng dyng cỷa ban cụ thờ dựng dugc bao gụm cà trong cõc thu viỗn mà b^n dang tham chiờu tửd):
Configure Data Source - ProductDataSource Choose a Context Object
0
Select a context object that can be used to retneve or update data.
J Show only DataContext objects
Choose your context object
WebApplicationl2.NorthwindDataContext ~
Next > Finish Cancel
Chung ta muôn chon mô hinh dû liêu dà dugc tao truôc dây vôd trinh thiêt kê LINQ to SQL. Chûng ta cỹng sở muụn chon bàng du liờu bờn trong mụ hinh dỷ liờu m à chỹng ta sở coi nhu thuc thờ chinh
dờ làm viỗc vỏi <asp:linqdatasource>. Trong vi dy nỏy chỳng ta sở chpn thyc thờ “Products”. Chỳng ta cỳng sở nhõn vỏo nỳt “Advanced” và cho phộp viờc cõp nhõt cỹng nhir xúa dỷ lieu:
Configure Data Source - ProductDataSource , C onfigure Data Selection
Table
Products (Table<Productằ)
•roup By [None]
H * Unit<OnOfd#f
ProductlD Reorder! evel Product Name Discontinued SupplierlO OrderO ôtails Category©
QuantrtyPerUnit UnitPnce
£ UnitsInStock
.
Category
Order By...
< Previous Finish Cancel
Khi nhõn vào nỳt “Finish” ử trờn, VS 2008 sở khai bõo mot <asp:linqdatasource> trong trang .aspx, và cõp nhõt <asp:gridview> dờ tro den nú (thụng qua thuục tớnh DataSourceID).Nú cỹng sở tu dông tao ra câc côt trong Grid dir trên câu truc cüa thuc thê Products mà chúng ta dâ chon:
i ContentPIaceHolderí (Custom)!
Products
ProductlD ProductNam e Supplie rID CategorylD QuantrtyPerUnit llnitPrice UnitsInStock UnitsOnOrder Discontinued ;
C ab c 0 0 ab c 0 0 0 r
1 ab c 1 1 ab c 0.1 1 1 17
2 ab c 2 2 ab c 0.2 2 2 r
3 ab c 3 3 ab c 0.3 3 3 (7
4 a b c 4 4 a b c 0.4 4 4 r
LinqDataSource - ProductDataSource
Chúng ta cúng cô thê nhâp vào hinh tam giâc nho dê bât lên “smart task” cúa GridView và chi ra chúng ta muôn cho phép viêc phân trang, sâp xêp, chinh sira và xóa dû lieu:
Com m on G rid V iew tasks A u to Form at...
C h o o se Data Source: Pro d u ctD ataS o u rce C onfigure Data Source...
Refresh S chem a Edit C olum ns...
A dd N ew C olum n...
M ove C o lu m n Right R em ove C o lu m n f \ J Enable Paging
[2] Enable Sorting (2l Enable Editing
^ 0 Enable Deleting Q Enable Selection
A dd Extender...
Edit T em p lates
Chúng ta có thể nhấn F5 đế thực thi, và có một trang hiển thị danh sách sản phấm với đầy đủ khả năng phân trang cũng như sắp xếp các cột:
1 Products
1 ProductName Supplier© Category© QuantityPerUnit UnitPrice UnitslnStock UnitsOnOrder Discontinued
Edit D elete Chai 1 1 10 boxes x 20
h ag s 100.0000 39 0 □
Edằ D elete C hang 1 1 24 - 12 02
bottles 22.0000 16 41 □
Edit D elete A niseed Syrup 1 2 12 - 550 ml
bottles 10.0000 13 70 □
C hef A nton's Edit D elete C ajun
S easoning
2 2 48 - 6 oz ja rs 23.0000 S3 0 □
Edit D elete C hef Anton's
G umbo Mix 2 2 36 boxes 21.3500 0 0
G ran d m a’s Ed# D elete B oysenberry
S p read
3 2 12 - 8 oz ja r s 25.0000 120 0
□ Uncle Bob’s
Edit D elete O rganic Dried P ears
3 7 12 • 1 lb pkgs. 30.0000 15 0
Northwoods Edit D elete C ran b erry
S auce
3 2 12 - 12 oz ja rs 40.0000 6 0
□
Edit D elete Mishi Kobe Niku 4 6 18 - 500 g
pkgs. 97.0000 29 0 0
Edit D elete Ikura 4 8 12 • 200 ml
ja r s 31.0000 31 0 □
1 2 3 4 5 6 7 8
_________ _______
Chúng ta cũng có thề nhấn và các nút “edit” hoặc “delete” đế cập nhật lại dữ liệu:
Products
ProductName Supplie rio CategorylD QuantityPerUnĩt
Edit Delete ch a i 1 1 10 bo xes X 20 bags
Update Cancel Changj I 1 1 2 4 - 12 02 bottles
Edit Delete Aniseed Syrup 1 2 12 - 550 ml bottles
Neu nhìn vào mã nguồn của trang, chúng ta sẽ thấy các thẻ của trang chứa nội dung giống như dưới đây. Thẻ <asp:linqdatasource> chỉ đến lóp DataContext của LINQ to SQL mà ta đã tạo trước đây, cũng như bảng dừ liệu mà chúng ta muốn dùng. GridView sau đó chỉ đến <asp:linqdatasource>
(thông qua DataSourcelD) và chỉ ra những cột nào sẽ được hiến thị, tiêu đề cột, cũng như cách sắp xếp sẽ được dùng khi tiêu đề cột được chọn.
<asp:C ontent ID = "C o n te n tl" C o nten tP laceH o 1d erID = "C o n tentP laceH o 1d erl" ru n a t= "se rv e r">
< div cla ss= "p ro d u c tsh e a d e r">
<h2>Prodúcts</h2>
</div>
< a sp :G rid V ie w ID=” G n 'd V ie w l" D ataSo u rceID = "Pro ductD ataSo urce” C s s C la s s = " g rid v ie w " A lt e r n a t !
<co1umns>
<asp: commandfie l d ShowDel e te B u tto n = "T ru e" ShowEdi tB u t to n = " T r u e " x / a s p : commandfi e l d>
< asp:bou nd fie1d D a ta F ie ld = ” ProductName" HeaderText="ProductNarae" S o rtE x p re s s io n = ” Pr
< a sp :b o u n d fie ld D a t a F ie ld = "5 u p p lie rlD " H e a d e rT e xt= "S u p p lie rlD " S o rtE xp ressio n = "S u p p
< asp:bou nd fie1d D ataFieTd = "C ateg o ryIO " H eaderText= "C atego ryID ' S o rtE x p re s s io n = "C a te
< a sp :b o u n d fie ld D a t a F ie ld = "Q u a n tityP e rU n it" H e a d e rT e xt= ''Q u a n tityP e rU n it" S o rtE x p re s
< asp:bou nd fie1d D a ta F ie ld = " U n itP r ic e " H e a d e rT e x t= "U n itP ric e " S o rtE x p re s s io n = "U n itP r
< a s p :b o u n d fie ld D a ta F ie ld = " U rn ts In S to c k " H e a d e rT e x t= "U n its ln s to c k " S o rtE x p re s s io n = "
< a sp :b o u n d fie ld D ataFieTd= "U nitsO nO rder" H eaderText= "U nitsO nO rder" S o rtE x p re s s io n = "
< a sp :ch e ckb o xfie T d D a ta F ie ld = "D is c o n tin u e d " H ead e rT e xt= "D isco n tin u ed " S o rt E x p r e s s io
</co"lumns>
</ asp :Gri dvi ew>
< a sp :Lin q D ata S o u rce ID = "Pro du ctD ataSo urce"
ContextTypeName="webApp1 i c a t i o n l2 . Northvvi ndDataContext"
TableNam é="Products"
E n a b le D e le te = "T ru e " EnableU pdate= "True"
ru n a t= " s e rv e r" />
< /àsp:C ontent>
Giờ chúng ta đã có một trang web cơ bản đế làm việc với mô hình dữ liệu LINQ to SQL, chúng ta có thế tiếp tục tùy biến giao diện và hành vi.