(NB) Giáo trình “Lập trình ASP.NET MVC” được biên soạn dành cho sinh viên cao đẳng nghề Lập trình máy tính với mục tiêu cung cấp cho người học các kiến thức và kỹ năng cần thiết như Trình bày quá trình xử lý yêu cầu của mô hình xử lý MVC và ASP.NET MVC; Kết nối và xử lý dữ liệu bằng LINQ và Entity Framework;m Xây dựng được ứng dụng web với ASP.Net MVC; Rèn luyện và nâng cao kỹ năng lập trình theo công nghệ Entity Framework (EF), Windows Communication Foundation (WCF).
Trang 2Bà R a – Vũng Tàu, năm 2016 ị
Trang 3TUYÊN B B N QUY NỐ Ả Ề
Tài li u này thu c lo i sách giáo trình nên các ngu n thông tin có thệ ộ ạ ồ ể
được phép dùng nguyên b n ho c trích dùng cho các m c đích v đào t o vàả ặ ụ ề ạ tham kh o.ả
M i m c đích khác mang tính l ch l c ho c s d ng v i m c đích kinhọ ụ ệ ạ ặ ử ụ ớ ụ doanh thi u lành m nh s b nghiêm c m.ế ạ ẽ ị ấ
Trang 5L I GI I THI UỜ Ớ Ệ
Giáo trình “L p trình ASP.NET MVC” đậ ược biên so n dành cho sinh viênạ cao đ ng ngh L p trình máy tính v i m c tiêu cung c p cho ngẳ ề ậ ớ ụ ấ ườ ọi h c các
ki n th c và k năng c n thi t đ có th hoàn thành ng d ng web qu ng cáoế ứ ỹ ầ ế ể ể ứ ụ ả
s n ph m, thả ẩ ương m i đi n t , … theo mô hình MVC trên.NET Framework.ạ ệ ửTác gi đã nghiên c u m t s tài li u, công ngh hi n đ i k t h p v iả ứ ộ ố ệ ệ ệ ạ ế ợ ớ kinh nghi m làm vi c th c t đ vi t nên giáo trình này. N i dung đệ ệ ự ế ể ế ộ ược tác
gi trình bày cô đ ng, d hi u kèm theo các bả ộ ễ ể ước hướng d n th c hành chiẫ ự
ti t giúp cho ngế ười h c d ti p thu các ki n th c c n thi t và hình thànhọ ễ ế ế ứ ầ ế
được k năng ngh ỹ ề
Trong quá trình biên so n, ch c ch n giáo trình còn nhi u thi u sót. Tácạ ắ ắ ề ế
gi r t mong nh n đả ấ ậ ược ý ki n đóng góp c a quý th y/cô và các em sinh viênế ủ ầ
Trang 7M C L CỤ Ụ
Trang 7
Trang 8K t n i và x lý d li u b ng LINQ và Entity Frameworkế ố ử ữ ệ ằ
Xây d ng đự ượ ức ng d ng web v i ASP.Net MVCụ ớ
Ren luyên va nâng cao ky năng lâp trinh theo công nghê Entity Framework̀ ̣ ̀ ̃ ̣ ̀ ̣ (EF), Windows Communication Foundation (WCF)
Th c hi n các bài th c hành đ m b o đúng trình t , an toàn.ự ệ ự ả ả ự
N i dung c a mô đun:ộ ủ
T
T Tên các bài trong mô đun
Th iờ gian
Trang 912 Tri n khai ng d ng ể ứ ụ 10 Tích h pợ
Trang 9
Trang 10Controller: thành ph n có trách nhi m ti p nh n và x lý các yêu c u g iầ ẹ ế ậ ử ầ ử
đ n cho ng d ng, làm nhi m v đi u ph i công vi c gi a View vàế ứ ụ ệ ụ ề ố ệ ữ Model
Vi c phát tri n ng d ng, nâng c p, b ro tì và th nghi m tr nên đ nệ ể ứ ụ ấ ả ử ệ ở ơ
gi n và d dàng h n.ả ễ ơ
Trang 11 Giúp phát tri n ng d ng nhanh, đ n gi n, d dàng nâng c pể ứ ụ ơ ả ễ ấ
B o trì: v i các l p đả ớ ớ ược phân chia, các thành ph n c a m t h th ng dầ ủ ộ ệ ố ễ dàng được thay đ i nh ng có th đổ ư ể ược cô l p t ng l p, ho c ch nhậ ừ ớ ặ ỉ ả
hướng đ n l p ngay g n k nó, không làm nh hế ớ ầ ề ả ưởng đ n c ng d ng.ế ả ứ ụ
M r ng: vi c thêm ch c năng vào t ng l p s d dàng h n.ở ộ ệ ứ ừ ớ ẽ ễ ơ
Nhược đi mể
Thích h p v i các d án v a và l nợ ớ ự ừ ớ
M t nhi u th i gian trong quá trình phát tri nấ ề ờ ể
M th i gian trung chuy n d li u gi a các l pấ ờ ể ữ ệ ữ ớ
1.3. Lý do nên làm trên mô hình MVC
Mô hình MVC đã chia ng d ng thành các thành ph n Model, View vàứ ụ ầ Controller nên người phát tri n có th t o ra nhi u View và nhi uể ể ạ ề ề Controller cho các Model mà không ph i đ i m t v i vi c thay đ i trongả ố ặ ớ ệ ổ thi t k Model.ế ế
Trang 11
Trang 12Nhóm View: ch u trách nhi m v xây d ng giao di n tị ệ ề ự ệ ương tác v i ngớ ườ idùng
Nhóm Model: ch u trách nhi m v vi c xây d ng các l p x lý trên d li uị ệ ề ệ ự ớ ử ữ ệNhóm Controller: có cái nhìn t ng th v các lu ng c a ng d ng, qu n lýổ ể ề ồ ủ ứ ụ ả các yêu c u, làm vi c v i các Model và l a ch n View hi n th choầ ệ ớ ự ọ ể ị
M c đích chính c a m u thi t k này là cô l p x lý nghi p v t giaoụ ủ ẫ ế ế ậ ử ệ ụ ừ
di n ngệ ười dùng đ t p trung vào kh năng b o trì, c i ti n, ki m thể ậ ả ả ả ế ể ử
t t h n và làm cho ng d ng có c u trúc g n h n.ố ơ ứ ụ ấ ọ ơ
MVC Framework được đ nh nghĩa trong namespace System.Web.Mvc.ị
Trang 132.2 Ki n trúcế
Hình 1.2. Mô hình ki n trúc 3 thành ph n trong MVC ế ầ
Models là các thành ph n có nhi m v :ầ ệ ụ
Đ c và ghi d li uọ ữ ệ
L u tr thông tin, tr ng thái c a các đ i tư ữ ạ ủ ố ượng
T t c các nghi p v logic đ u đấ ả ệ ụ ề ược th c thi Model. D li u đự ở ữ ệ ượ c
nh p t ngậ ừ ười dùng s thông qua View đ ki m tra Model trẽ ể ể ở ước khi
l u vào CSDL. Vi c truy xu t, xác nh n và l u d li u là ph n vi cư ệ ấ ậ ư ữ ệ ầ ệ
Là các thành ph n x lý tầ ử ương tác v i ngớ ười dùng, làm vi c v i Model,ệ ớ
ch n m t View thích h p đ hi n th thông tin giao di n ngọ ộ ợ ể ể ị ệ ười dùngTrong m t ng d ng MVC, View hi n th thông tin, còn đi u khi n dòngộ ứ ụ ể ị ề ể
nh p xu t c a ngậ ấ ủ ười dùng v n do Controller đ m trách.ẫ ả
Trang 13
Trang 142.3. Quá trình x lý yêu c uử ầ
M t trong nh ng khái ni m quan tr ng nh t đ hi u v ng d ng MVC làộ ữ ệ ọ ấ ể ề ề ứ ụ không có m i quan h t n t i gi a m t yêu c u và m t t p tin v t lý bênố ệ ồ ạ ữ ộ ầ ộ ậ ậ trong Web Server
Trong ng d ng ASP.NET Web Forms truy n th ng, m i yêu c u đứ ụ ề ố ỗ ầ ượ c
d ch thành m t l i g i đ n m t t p tin trong Web Server. Ví d : n uị ộ ờ ọ ế ộ ậ ụ ế yêu c u là m t url ầ ộ http://myapp/mypage.aspx thì Web Server s thôngẽ
d ch yêu c u này b ng cách tìm ki m trong th m c c a ng d ngị ầ ằ ế ư ụ ủ ứ ụ
m t t p tin có tên là mypage.aspx. Sau đó s x lý t p tin này và tr vộ ậ ẽ ử ậ ả ề
k t qu d ng HTML.ế ả ạ
Đ i v i ng d ng MVC, khi ti p nh n m t yêu c u (ví d :ố ớ ứ ụ ế ậ ộ ầ ụ http://myapp/product/list) thì m t thành ph n độ ầ ược g i là ọ “routing engine” s so sánh yêu c u v i route c th ẽ ầ ớ ụ ể
Route s xác đ nh các yêu c u b ng cách s d ng m t chu i n n, thi t l pẽ ị ầ ằ ử ụ ộ ỗ ề ế ậ Controller và phương th c bên trong Controller c n x lý yêu c u.ứ ầ ử ầ
Khi Route được nh n di n, công c route t o ra b giám sát yêu c u, bậ ệ ụ ạ ộ ầ ộ này l n lầ ượ ẽ ạt s t o ra các đ i tố ượng Controller đ x lý yêu c u (trongể ử ầ
ví d trên thì controller là ụ product và ph ng th c x lý là ươ ứ ử list).
Hình 1.3. Quá trình x lý yêu c u c a MVC ử ầ ủ
2.4. M t s đ c đi mộ ố ặ ể
Ti p t c h tr các tính năng trong ASP.NETế ụ ỗ ợ
H tr s d ng các t p tin .ASPX, ASCX, .Master nh là thành ph nỗ ợ ử ụ ậ ư ầ View
H tr đ y đ các tính năng b o m t c a ASP.NETỗ ợ ầ ủ ả ậ ủ
Form/Windows authenticate, URL authorization, Membership/Roles, Output và data caching, secion/profile state, configuration system,
Trang 15Tách rõ ràng các m i liên quan, m ra kh năng test TDD (Test Drivenố ở ả Developer)
Có th test unit trong ng d ng mà không c n ph i ch y Controllers cùngể ứ ụ ầ ả ạ
v i ti n trình c a ASP.NET và có th dùng b t k m t unit testingớ ế ủ ể ấ ỳ ộ framework nào nh Nunit, MBUnit, MS Test, …ư
Có kh năng m r ng ng d ng, m i th trong MVC đả ở ộ ứ ụ ọ ứ ược thi t k đ dế ế ể ễ thay th , d dàng tùy bi n.ế ễ ế
Ánh x URL m nh m , cho phép xây d ng ng d ng v i URL g n gàng,ạ ạ ẽ ự ứ ụ ớ ọ thân thi n v i các Search Engineệ ớ
Không s d ng mô hình PostBack t giao di n g i đ n Server. Thay vào đó,ử ụ ừ ệ ử ế
ch đ ng đ a nh ng PostBack t View đ n th ng Controller tùy ý.ủ ộ ư ữ ừ ế ẳ
Không còn ViewState hay Page Lifecycle t n t i trong mô hình MVCồ ạ
H tr công c t o View (Support for Multiple View Engine)ỗ ợ ụ ạ
Cho phép ch n công c t o Viewọ ụ ạ
H p tho i New Project cho phép xác đ nh View Engine m c đ nh cho m tộ ạ ị ặ ị ộ project
Có th d dàng đ nh ra các quy lu t cài đ t để ễ ị ậ ặ ường đi. ASP.NET MVC
d a vào các quy lu t đó đ xác đ nh Controller và phự ậ ể ị ương th cứ (Action) c n ph i th c thi.ầ ả ự
Trang 15
Trang 16ASP.NET còn có kh năng phân tích URL, chuy n các thông s trongả ể ố URL thành các tham s trong l i g i t i phố ờ ọ ớ ương th c trong Controller.ứModel Binding
vi c suy ngh làm cách nào đ ánh x d li u t ngệ ỉ ể ạ ữ ệ ừ ười dùng sang các
đ i tố ượng .NET)
Tính năng Bunding được áp d ng m c đ nh. Ngụ ặ ị ười phát tri n không c nể ầ
ph i g i các script ho c các t p tin css riên bi t b i vì t t c s đả ọ ặ ậ ệ ở ấ ả ẽ ượ cđóng gói và nén l i.ạ
Filters: tính năng m nh trong ASP.NET MVC, h tr cho vi c ki m tra tínhạ ỗ ợ ệ ể
h p l trợ ệ ước khi m t phộ ương th c hành đ ng đứ ộ ược g i ho c sau khi thiọ ặ hành
Razor View
Cú pháp Razor g n gàng và xúc tích, đòi h i m t s lọ ỏ ộ ố ượng t i thi u cácố ể
t h p phím.ổ ợ
Tìm hi u Razor tể ương đ i d dàng vì nó d a trên C# và HTML.ố ễ ự
Visual Studio bao g m IntalliSense và mã cú pháp Razor đồ ược màu hóa
V i Razor View có th ki m tra t ng đ n v mà không đòi h i ph i ch yớ ể ể ừ ơ ị ỏ ả ạ
ng d ng ho c ph i ch y Web Server
Không s d ng ViewState đ đi u khi n ng d ng.ử ụ ể ề ể ứ ụ
B sung m i h th ng đ nh tuy n (Routers).ổ ớ ệ ố ị ế
Trang 17H tr t i đa cho vi c ki m th b ng vi c t o và cài đ t các unitests tỗ ợ ố ệ ể ử ằ ệ ạ ặ ự
đ ng.ộ
H tr k t h p r t t t gi a ngỗ ợ ế ợ ấ ố ữ ườ ậi l p trình và thi t k giao di n.ế ế ệ
Khuy t đi mế ể
Thay đ i cách l p trình c a Web Forms nên gây ra nhi u khó khăn choổ ậ ủ ề
nh ng ngữ ười chuyên s d ng Web Forms chuy n sang mô hình nàyử ụ ể (không còn hướng đ n các s ki n c a các control).ế ự ể ủ
Ngườ ậi l p trình ph i bi t nhi u v HTTP, HTML, CSS và Javascript.ả ế ề ề
Áp d ng cho d án nh thì quá c ng k nh và ph c t pụ ự ỏ ồ ề ứ ạ
2.5. So sánh MVC và Web Form
ASP.NET Web Forms s d ng ViewState đ qu n lý ử ụ ể ả khi có s tự ương tác
v i ngớ ười dùng thì x lý ch m.ử ậ
ASP.NET MVC chia làm 3 thành ph n: Model, View, Controller.ầ
M i tọ ương tác c a ngủ ười dùng v i Views s đớ ẽ ược x lý thông qua vi cử ệ
th c hi n các phự ệ ương th c hành đ ng trong Controllers, không cònứ ộ PostBack, Lifecycle và events
Vi c ki m tra (test) và g l i (debug)ệ ể ỡ ỗ
ASP.NET Web Forms ch y t t c các ti n trình, s thay đ i ID c a b tạ ấ ả ế ự ổ ủ ấ
k control nào cũng nh hỳ ả ưởng đ n ng d ng.ế ứ ụ
V i MVC, vi c đó có th s d ng các unit test đ th m đ nh r t d dàngớ ệ ể ử ụ ể ẩ ị ấ ễ các Controller th c hi n th nào.ự ệ ế
B ng so sánh các tính năng gi a ASP.NET Web Forms và ASP.NET MVCả ữ
Ki n trúcế Mô hình Web form
Bussiness Database
S d ng vi c phân chia ngử ụ ệ ứ
d ng thành Models, Views,ụ Controllers
Cú pháp S d ng cú pháp c a Webử ụ ủ
Form, t t c các s ki n vàấ ả ự ệ controls do Server qu n lýả
Các s ki n đự ệ ược đi u khi nề ể
b i các controller, cácở controller không do Server
qu n lýảTruy c p dậ ữ
Trang 18Tương tác
v i Javascriptớ Khó khăn vì các control
được đi u khi n b i Serverề ể ở D dàng vì các đ i tễ ố ượ ng
không do Server qu n lýảURL Không thân thi nệ Thân thi nệ
Trang 19T O NG D NG ASP.NET MVCẠ Ứ Ụ
Gi i thi u:ớ ệ
Bài này cung c p cho ngấ ườ ọi h c nh ng ki n th c và k năng đ t o m iữ ế ứ ỹ ể ạ ớ
m t ng d ng ASP.NET MVC s d ng mã Razor và cài đ t Entityộ ứ ụ ử ụ ặ Framework
Kh i đ ng Visual Studio 2013 (ho c m i h n)ở ộ ặ ớ ơ
T o m i project, ch n .NET Framework, th m c và tên project theo h pạ ớ ọ ư ụ ộ tho i dạ ướ ồi r i ch n OKọ
Trang 19
Trang 21T ch c l u trổ ứ ư ữ
C u trúc th m c c a ng d ng ASP.NET MVC g m 3 th c m c chính:ấ ư ụ ủ ứ ụ ồ ự ụ
Controllers: l u tr các class đóng vai trò Controllerư ữ
Models: l u tr các class Modelư ữ
Views: l u tr các Viewư ữ
Các th m c khácư ụ
Content: ch a các t p tin CSS, hình nh liên quan đ n giao di nứ ậ ả ế ệ
Scripts: ch a các th vi n Javascript, jqueryứ ư ệ
App_Start: ch a các t p tin liên quan đ n vi c c u hình cho các tính năngứ ậ ế ệ ấ
nh : routes, filters, bundlesư
App_Data: l u tr t p tin d li u XML ho c local database, SQLiteư ữ ậ ữ ệ ặ
Bin: l u tr các compiled c a ng d ngư ữ ủ ứ ụ
Phân bi t ASPX và Razor View Engineệ
Gi ng nhauố
Đ u dùng đ hi n th giao di n trên Web Browser, có khái ni m v Masterề ể ệ ị ệ ệ ề Page và User Control được đ nh nghĩa v i Layout (View đ k th aị ớ ể ế ừ Layout) và PartialView (subView)
Khác nhau
ASPX: v n có th s d ng đẫ ể ử ụ ược các Master Page và User Control (k cể ả đóng vai trò ch hi n th d li u và không x lý đỉ ệ ị ữ ệ ử ược d li u) ữ ệ d dàngễ cho ngườ ậi l p trình ch a k p thích nghi v i phong cách c a MVC, ngoàiư ị ớ ủ
ra v n có th s d ng đẫ ể ử ụ ược subView đ thay đ i cho User Control đ xể ổ ể ử
lý d li u t actionữ ệ ừ
Razor: được h tr m nh h n v Javascript, tùy ch nh linh ho t gi a codeỗ ợ ạ ơ ề ỉ ạ ữ C# v i HTML, linh ho t trong Layout và subView (PartialView)ớ ạ
Trang 22i += 1;
<p>Line @i</p>
} }
T p tin có ph n m r ng là ậ ầ ở ộ .cshtml
T o Web Page đ n gi n v i mã Razorạ ơ ả ớ
Click chu t ph i lên project ộ ả Add New Item…
Trang 24Hình 2.5. Tìm ki m và cài đ t Entity Framework cho ng d ng ế ặ ứ ụ
Bài 2: S d ng vòng l p for ho c foreach.ử ụ ặ ặ
Bài 3: S d ng vòng l p for ho c foreach, k t h p v i các th HTML t oử ụ ặ ặ ế ợ ớ ẻ ạ
Trang 26Ngoài ra, n i dung bài cũng gi i thi u đ n m t CSDL m u đ n gi n choộ ớ ệ ế ộ ẫ ơ ả
ng d ng th ng m i đi n t CSDL này s đ c s d ng xuyên su t các
Trang 27Hình 3.2. Mô hình l p trình t ậ ươ ng tác gi a EF v i CSDL ữ ớ
ADO.Net providers
Layer này s d ng chu n ADO.Net đ làm vi c v i CSDLử ụ ẩ ể ệ ớ
Thi hành command và tr k t qu d a trên DBMS c thả ế ả ự ụ ể
Entity Data Model (EDM)
Là m t t p h p các object mô t c u trúc các nghi p v (business data)ộ ậ ợ ả ấ ệ ụ
và ánh x đ n thành ph n l u tr bên dạ ế ầ ư ữ ưới
G m có 3 layerồ
Conceptual – Conceptual Schema Definition Language (CSDL): ngôn
ng đ nh nghĩa các entity relationshipữ ị
Mapping – Mapping specification language (MSL): đ nh nghĩa các ánhị
x gi a l p conceptual và logicalạ ữ ớ
Logical/Storage – Store Schema Definition Language (SSDL): đ nhị nghĩa mô hình l u tr c a d li u.ư ữ ủ ữ ệ
Trang 27
Trang 28Qu n lý k t n i (Managing Connections): s d ng EntityConnectionả ế ố ử ụ
T o và thi hành truy v n: s d ng EntityCommand, EntityDataReader,ạ ấ ử ụ EntityParameter
Qu n lý giao tác (Managing Transactions)ả
Trang 29Là m t ngôn ng truy v n d li u đ c l p, nó tộ ữ ấ ữ ệ ộ ậ ương t nh SQLự ư
Cho phép truy v n th c th d li u (entity data)ấ ự ể ữ ệ
L u ý: ngôn ng a này truy v n d a trên EDM ch không ph i CSDLư ữ ấ ự ứ ảObject Services
Cho phép truy v n, thêm, c p nh t và xóa d li uấ ậ ậ ữ ệ
Bi u di n d li u dể ễ ữ ệ ưới d ng các đ i tạ ố ượng có đ nh ki u m nh trongị ể ạ CLR
H tr ngôn ng LINQ to Entities và eSQL d a trên các ki u đỗ ợ ữ ự ể ược đ nhị nghĩa trong mô hình quan ni m.ệ
C th hóa d li u tr v và các đ i tụ ể ữ ệ ả ề ố ượng và l u l i các tr ng thái thayư ạ ạ
đ i v CSDLổ ề
Các l p h tr n m trong System.Data.Entityớ ỗ ợ ằ
Các class t đ ng phát sinh tự ộ ương ng v i mô hìnhứ ớ
DbContext: đ i di n cho m t database, qu n lý các k t n iạ ệ ộ ả ế ố
DbSet<Tentity>: là m t t p h p các entity. M i đ i tộ ậ ợ ỗ ố ượng này tươ ng
ng v i m t table
LINQ to Entities
Trang 29
Trang 30Là phương pháp truy v n d li u thông qua mô hình th c th d li uấ ữ ệ ự ể ữ ệ (Entity Data Model – EDM) mà EF h tr ỗ ợ
Chuy n đ i truy v n LINQ thành truy v n cây l nh (Command treeể ổ ấ ấ ệ queries)
Chi n lế ượ ả ữ ệc t i d li u trong EF
3.1. LazyDeferred loading
Lazy loading là quá trình mà m t ho c nhi u t p th c th độ ặ ề ậ ự ể ược load tự
đ ng t CSDL l n đ u tiên hay không. N u t t nó thì thu c tính thamộ ừ ầ ầ ế ắ ộ chi u đ n th c th (Navigation properties) đế ế ự ể ược truy xu t (nghĩa là truyấ
xu t các th c th có liên quan)ấ ự ể
Thao tác: M c a s EDM, click ph i chu t, ch n Propertiesở ử ổ ả ộ ọ
Hình 3.5. Ch n chi n l ọ ế ượ ả c t i LazyDeferred
Ví d : vào c a s code c a EDM, ta khai báo nh sau:ụ ử ổ ủ ư
Trang 31Lúc Lazy Loading b t t, thì khi t o câu truy v n, ta ph i dùng Eager ho cị ắ ạ ấ ả ặ Explicit loading đ t i các th c th có liên quan.ể ả ự ể
Ngượ ạc l i Lazy, Eager loading là quá trình t i nh ng th c th có liên quanả ữ ự ể
đ n th c th đang truy v n khi đế ự ể ấ ược yêu c u tầ ường minh
S d ng phử ụ ương th c Include đ th c hi n Eager Loadingứ ể ự ệ
Trong ng d ng, chúng ta thứ ụ ường b t Lazy Loading đ tăng hi u qu đ cậ ể ệ ả ọ
d li u.ữ ệ
Lúc nào c n d li u liên quan thì dùng Includeầ ữ ệ
Ví d : s a l i ví d 1, dùng Eager loadingụ ử ạ ụ
Trang 33TRUY V N VÀ C P NH T D LI U V I LINQ và ENTITYẤ Ậ Ậ Ữ Ệ Ớ
DATA MODEL
Gi i thi u:ớ ệ
Bài này cung c p cho HSSV ki n th c và k năng truy v n và c p nh tấ ế ứ ỹ ấ ậ ậ
d li u v i LINQ và Entity Data Modelữ ệ ớ
M c tiêu:ụ
Trình bày quy trình truy v n d li u LINQ to EFấ ữ ệ
Truy v n d li u b ng k thu t LINQ to EF và hi n th trên Web Pageấ ữ ệ ằ ỹ ậ ể ị MVC
Trình bày quy trình thêm, xóa, s a d li uử ữ ệ
Xây d ng phự ương th c th c thi Store Procedureứ ự
Xây d ng đự ược Web Page thêm, xóa, s a d li uử ữ ệ
Trang 34Truy v n có đi u ki nấ ề ệ
Truy v n có s p x p d li uấ ắ ế ữ ệ
Truy v n gom nhómấ
Trang 36Thu c tính State: tr ng thái c a entity, g m các giá tr :ộ ạ ủ ồ ị
Added: đang được b sung vào contextổ
Unchanged: các giá tr trong context ch a thay đ iị ư ổ
Modified: các giá tr trong context đã thay đ i nh ng ch a c p nh tị ổ ư ư ậ ậ
Deleted: đang được đánh d u xóa trong contextấ
Datached: th c t không n m trong context hi n hành (nó không theo dõi)ự ế ằ ệ3.2. Xóa
Ví d 1:ụ
Trang 37Vi t các lênh LINQ to EF th c hi n các yêu c u sau:ế ự ệ ầ
Bài 1. Danh sách khách hàng có DiaChi là Tp.HCM
Bài 2. Thêm khách hàng m i (thông tin b t k )ớ ấ ỳ
Bài 3. Th ng kê s l ng hóa đ n c a m i khách hàngố ố ượ ơ ủ ỗ
Bài 4. Th ng kê t ng ti n hóa đ n c a m i khách hàngố ổ ề ơ ủ ỗ
Bài 5. Truy v n k t KhachHang và HoaDon, l y ra thông tin Holot, Ten,ấ ế ấ HD_ID và GiaTri
Trang 37
Trang 38T o đạ ược các Data Model v i EFớ
L p trình đậ ược các hàm đ c và c p nh t d li u thông qua Modelọ ậ ậ ữ ệ
C n th n, th c hi n đúng các bẩ ậ ự ệ ướ ạc t o Entity Data Model, khai báo đúng thông tin k t n i đ n ngu n d li uế ố ế ồ ữ ệ
1 Khái ni mệ
Là thành ph n c t lõi c a ng d ng, có nhi m v truy c p d li u t m tầ ố ủ ứ ụ ệ ụ ậ ữ ệ ừ ộ ngu n d li u và cung c p d li u cho ngu n d li u đó.ồ ữ ệ ấ ữ ệ ồ ữ ệ
L u tr thông tin, tr ng thái c a các đ i tư ữ ạ ủ ố ượng
T t c các nghi p v logic đ u đấ ả ệ ụ ề ược th c thi Model.ự ở
M t model class trong ng d ng ASP.NET MVC không tr c ti p x lý đ uộ ứ ụ ự ế ử ầ vào t trình duy t, cũng không t o ra HTML cho trình duy t.ừ ệ ạ ệ
D li u nh p vào t ngữ ệ ậ ừ ười dùng thông qua View đ ki m tra Modelể ể ở
trước khi l u vào CSDL.ư
Model có th để ược phân làm 3 lo i: Data Model, Business Model và Viewạ Model v i nhi u v c th khác nhau.ớ ệ ụ ụ ể
Các lo i Modelạ
2.1. Data Model
Các đ i tố ượng trong Data Model đ i di n cho các class tạ ệ ương tác v i m tớ ộ CSDL. Các class đượ ạc t o ra b i nh ng công c nh Entity Frameworkở ữ ụ ư (EF)
Trang 39Các class này có th để ượ ạc t o ra t phừ ương pháp Database First ho c Codeặ first. Ngoài ra, cũng có th s d ng ADO.NET đ t o th công.ể ử ụ ể ạ ủ
2.2. Business Model
Các class trong Business model thường được th c hi n ch c năng ki m traự ệ ứ ể các quy t c nghi p v ho c x lý nghi p v (ví d : tính toán chi phí v nắ ệ ụ ặ ử ệ ụ ụ ậ chuy n c th cho m t gi hàng d a trên tr ng lể ụ ể ộ ỏ ự ọ ượng c a m t hàng đủ ặ ượ cmua). V i 1 ph n trách nhi m x lý đó, các class trong business model có thớ ầ ệ ử ể
tương tác v i các class trong Data model đ đ c ho c l u tr d li u trongớ ể ọ ặ ư ữ ữ ệ CSDL
Ch c năng c a m t view model class không x lý b t k đi u gì, thay vàoứ ủ ộ ử ấ ỳ ề
đó, ch c năng duy nh t c a nó là ch a d li u và siêu d li u tùy ch nứ ấ ủ ứ ữ ệ ữ ệ ọ (optional metadata) giúp cho view render chính xác
View model cũng được s d ng khi ngử ụ ười dùng yêu c u t m t view đãầ ừ ộ
được render trước đó (ví d : khi submit m t form liên h )ụ ộ ệ
T o Data Model v i EFạ ớ
Click chu t ph i th m c Models, ch n Add ộ ả ư ụ ọ ADO.NET Entity Dat Model
Trang 39
Trang 40Hình 5.1. Các b ướ ạ c t o ADO.NET Entity Data Model
Đ t tên cho model theo hình bên dặ ưới
Hình 5.2. H p tho i đ t tên cho Model ộ ạ ặ
Ch n EF Designer from database (Data first) nh hình bên dọ ư ưới
Hình 5.3. Ch n d li u ngu n cho Model (Data first) ọ ữ ệ ồ
Trong h p tho i Choose Your Data Connection, click chu t lên nút Newộ ạ ộ Connection