ASP.NET Dynamic data
U nedavno (pre par meseci) objavljenom ASP.NET 3.5 Extensions CTP paketu, jedna od novih stvari je i Dynamic Data.
U nedavno objavljenom CTP izdanju ASP.NET Extensions CTP paketu (objavljenom u Decembru 2007), jedna od stavki koje su došle je i Dynamic Data. Ukratko govoreći, Dynamic Data vam omogućavaju da jako brzo, sa svega par klikova, napravit kompletan CRUD interfejs za vašu web aplikaciju. Kada instalirate CTP paket, instaliraju se i projektni templejti koji omogućavaju lako pravljenje sajta sa podrškom za ove mogućnosti.
Pošto Dynamic Data, kao što mu samo ime kaže, radi sa podacima koji, uglavnom, dolaze iz baze podataka, koristiću AdventureWorks bazu podataka. To je baza podataka koja može da se skine za SQL Server 2005 i SQL Server 2008 sa CodePlex-a. Ukoliko više volite stari dobri Northwind, slobodno koristite njega, procedure se ne razlikuju od ovih koje ću opisati.
Prvi korak je prosto pravljenje projekta iz Visual Studia 2008, odabirom File -> New Web site opcije:
Dynamic Data je samo još jedan ASP.NET sajt, tako da možete ili da ga smestite na fajl sistem ili odmah da napravite virtuelnu folder i aplikaciju na IIS-u, ukoliko ga imate instaliranog. U ovom slučaju ću odabrati da postavim sajt na fajl sistem.
Pošto se projekat napravi, postojaće nekoliko stvari koje mogu da vidim u Solutions Explorer paleti.
Primetite da se po pravilu pravi nekoliko CSS fajlova, kao i folder App_Shared u kom se nalaze templejti putem kojih se kasnije može
Pošto je projekat napravljen, vreme je da se doda model koji će predstavljati vezu između podataka i dinamičkog interfejsa. U ovom slučaju ću koristiti podršku za LINQ to SQL koja dolazi uz Visual Studio 2008 i .NET Framework 3.5. D abi napravio model, koristiću grafički dizajner za LINQ to SQL klase. Prvo ću dodati novi fajl u projekat preko opcije "Add new Item...":
Zatim ću odabrati da dodam LINQ to SQL klase i daću ime AW, po bazi AdventureWorks:
Pošto ovo uradim, otvoriće se površina dizajnera. Modeliranje, odnosno kreiranje LINQ to SQL klasa se pravi prostim prevlačenjem objekata iz baze podataka, bilo da su to tabele, pogledi (views) ili procedure (stored procedures) i njihovim spuštanjem na površinu dizajnera. Dizajner automatski kreira po jednu klasu za svaku tabelu koju prevučem. Isto tako, održavaju se relacije između tabela.
Prvi korak je, dakle, Server explorer.
Zatim prevlačim nekoliko tabela na površinu dizajnera. Obratite pažnju da se relacije održavaju:
Posle ovoga nam ostaje još jedan korak. Po default-u, dinamički templejti nisu uključeni, te ih moramo namenski uključiti tako što ćemo modifikovati web.config i postaviti enableTemplates direktivu na "true":
Posle ovog koraka, ostaje smao pokretanje aplikacije, bilo kroz debaging (F5) ili bez istog (Ctrl-F5). Kada to uradimo, dobijamo dinamički sajt, koji nam omogućava da radimo sa podacima.
Relacije se održavaju, te ako kliknemo na tabelu Products, dobićemo GridView koji nam daje i prikaz detalja na istoj strani, ali i filter po kategoriji proizvoda:
Naravno, AJAX je prisutan svugde, od pregledanja detalja pojedinog sloga, do editovanja ili učitavanja proizvoda za određenu kategoriju.
Sve ovo se dobija samo sa jednom linijom koda, i to direktivom u web.config-u! Naravno, izgled sajta koji se ovako dobije je kompletno izmenljiv putem CSS fajlova koje možete da vidite u Server explorer paleti. Isto tako, svaki deo strane koji prikazuje podatke može da se menja, ali to ćemo ostaviti za neki drugi post.
Peace. Out.
BD: