BLOGas.lt
Sukurk savo BLOGą Kitas atsitiktinis BLOGas

Lietuviška .NET vartotojų grupė (jau turi pavadinimą!)

Parašė Sergejus | 2007-12-28 15:43

Sveiki! Kaip žinia jau kurį laiką vyksta darbai ties Lietuvos .NET vartotojų grupės kūrimo. Vakar vyko dar vienas vartotojų grupės komiteto susirinkimas ir aš su didžiuliu malonumu galiu pranešti keletą svarbių dalykų:



  • Vartotojų grupė, kaip ir buvo planuota, vadinsis „Lietuvos .NET vartotojų grupė“ arba angliškai „Lithuanian .NET User Group“.

  • Vartotojų grupės domeninis adresas yra dotnetgroup.lt (puslapio kol kas nėra)

Šiuo metu sprendžiama kokią platformą pasirinkti vartotojų grupės puslapiui. Kadangi dauguma mūsų programuotojai, su puslapio konfigūravimu/programavimu problemų nebus, bet


MUMS REIKALINGAS DIZAINERIS, KURIS PARUOŠTŲ VARTOTOJŲ GRUPĖS PUSLAPIO DIZAINĄ


Jeigu jus norite padėti, rašykite komentaruose, busime labai dėkingi ir gal net pavyks padovanoti dizaino kūrėjui Microsoft pelę!


Ir dar viena džiugi naujiena, mes nusprendėme pirmą vartotojų grupės mini susitikimą organizuoti vasario mėnesį. Dėl patalpos apribojimų gali dalyvauti 30 žmonių įskaitant mus (organizacinį komitetą, 8 asmenys). Blogo skaitytojams skirtos 3 vietos, todėl norėdami sudalyvauti pirmame susitikime rašykite man . Nepaisant 3 vietų, rašykite visi kas norėtų sudalyvauti, planuojant antrą susitikimą į norinčių skaičių bus atsižvelgta, o jums bus teikiama pirmenybė.


Planuojama renginio dienotvarkė:



  • 15-20 min. - komiteto prisistatymas ir vartotojų grupės tikslų, uždavinių pristatymas

  • 45-60 min. - pirmas pristatymas (planuojama apie LINQ), pristatymas skirtas parodyti skirtumus tarp tradicinio operavimo duomenimis ir operavimu naudojant LINQ, pristatymas bus orientuotas į kodą (C#), pristatinėsiu aš (Sergejus)

  • 45-60 min. - pristatymas skirtas naujos Microsoft technologijos ADO.NET Data Services apžvalgai (+ gal Entity Framework), pristatymas bus labiau skirtas supažindinti su artėjančiomis technologijomis (apie jas jau rašiau bloge), pristatinės Valentinas

  • Neformalus bendravimas prie alaus :)

Taigi tiek naujienų šiam kartui.

Rodyk draugams

Įvadas į Entity Framework (2 dalis)

Parašė Sergejus | 2007-12-25 13:51

Sveiki ir su Kalėdom! Pirmoje įvade į Entity Framework dalyje aš aprašiau teorinius technologijos aspektus, o šiandien pradėsim nuo paprasčiausių pavyzdžių. Primenu, jus turite turėti savo Visual Studio 2008 suinstaliuotus Entity Framework ir jam skirtus įrankius.


Kaip pavyzdį aš naudosiu web aplikaciją, kuri ims duomenis iš duomenų bazės pasinaudojant Entity Framework galimybėmis. Sukūrus naują web projektą, per File→Add New Item meniu punktą pasirenkame ADO.NET Entity Data Model, suteikiame norimą pavadinimą ir spaudžiame OK.



Atsiradusiame lange reikia nurodyti ar mes generuosime esybes pagal duomenų bazės schemą, ar pirma mes kursime esybes ir vėliau pagal jas bus sugeneruota duomenų bazės schema. Mūsų atveju pasirenkame pirmą variantą.



Toliau nurodome mūsų duomenų bazės prisijungimo eilutę (savo pavyzdyje aš naudoju specialiai šiam pavyzdžiui sukurtą MyBlog duomenų bazę) ir suteikiame esybių prisijungimo eilutei pavadinimą Web.config faile. Tam pačiam lange matosi ir pati esybių prisijungimo eilutė, apie kuria esu trumpai rašęs pirmoje dalyje.



Paskutiniame lange nurodomo visi duomenų bazės objektai, kurie bus įtraukti į Entity Framework modelį.



Paspaudus pabaigos mygtuką, Entity Framework sugeneruos visas pasirinktas esybes, ryšius tarp jų bei kitus meta duomenis. MyBlog duomenų bazės atveju modelio vaizdas atrodys taip:



Kaip matyti, modelio esybės turi po savybę kiekvienam lentelės stulpeliui (neskaitant išorinių raktų), pagal kiekvieną išorinį raktą yra sukurtos navigacijos esybės, kurių dėka galima tiesiogiai prieiti prie susijusios esybės. 1 su daug ryšio atveju navigacijos savybė generuojama kaip susijusių esybių sąrašas. Esybių pirminiai raktai buvo nustatyti pagal atitinkamų lentelių pirminius raktus.


Iki šiol, visu minėtu funkcionalumu pasižymi ir LINQ to SQL technologija, tik kas atsimena, tai buvo daroma žymiai paprasčiau. Todėl jeigu jums reikia tiesiog 1 prie 1 duomenų bazės schemos atitikmens, paprasčiau ir greičiau pasinaudoti LINQ to SQL.


Trečioje dalyje aš pradėsiu aprašinėti išskirtines Entity Framework galimybes. O kol kas aprašysiu elementariausią ASP.NET puslapį, sudarytą iš vieno GridView komponento ir užpildysiu jį duomenimis pasinaudojant LINQ to Entity užklausa.





Pirma į ką reikėtų atkreipti dėmesį, Entity Framework duomenų modelio apibrėžimo metu šalia duomenų bazės prisijungimo eilutės nurodėme ir modelio pavadinimą MyBlogModel. Jis yra naudojamas kaip vardų sritis. Mūsų objekto kontekstui (apie jį rašiau pirmoje dalyje) suteikėme pavadinimą MyBlogEntities, per jį prieinama prie visų sugeneruotų esybių ir kitų modelio objektų.


Taigi tiek šiam kartui, kitoje dalyje parodysiu daug patogių Entity Framework ORM galimybių, o kol kas linksmų švenčių!

Rodyk draugams

Įvadas į Entity Framework (1 dalis)

Parašė Sergejus | 2007-12-23 13:43

Su artėjančioms Kalėdoms! Kaip ne būtų keista, bet prieš Kalėdinis laikotarpis dažniausiai man gaunasi labai įtemptas. Daugelis užsakovų nori, kad sistema būtų pagaminta dar šiais metais, atitinkamai visas laikas skiriamas programų kūrimui ir nebelieka laiko net parašyti nei vieno straipsnio… Bet Kalėdos jau greitai, o tai reiškia ir laiko atsiranda truputi daugiau.


Šiandien aš pradedu kelių straipsnių ciklą, skirtą naujausiai Microsoft objektinio-reliacinio susiejimo (ORM) technologijai – Microsoft Entity Framework. Įdomu tai, kad net daugeliui gerai žinomas ScottGu nėra detaliai rašęs apie šią technologiją, todėl nusprendžiau tai padaryti pats ir dar lietuviškai!


Taigi kaip jau esu rašęs, Entity Framework – tai Microsoft atsakas gerai žinomam ir plačiai naudojamam NHibernate bei kitiems ORM įrankiams. Kas skaitė mano straipsnius iš TechEd Developers, tai žino aš dalyvavau keliose sesijose skirtose Entity Framework. Pirmas klausimas kuris kilo man ir daugeliui dalyvių, kuo skiriasi Entity Framework nuo LINQ to SQL. Pagrindinis skirtumas, LINQ to SQL tai greitas verslo objektų generavimo įrankis 1 prie 1 pagal duomenų bazės schemą. Jo pagalba negalima kurti objektų pagal kelias lenteles, kurti sudėtingas asociacijas ir jis yra palaikomas mažesnio skaičiaus duomenų bazių gamintojų, palyginus su Entity Framework. Kitais žodžiais, jeigu jūsų kuriamiems sprendimams reikės pilnavertės ORM technologijos, jus turite žiūrėti į Entity Framework pusę, bet ne į LINQ to SQL.


Entity Framework susideda iš trijų pagrindinių dalių: koncepcinio modelio (CSDL) arba kitaip verslo objektų, saugyklos modelio (SSDL) arba kitaip duomenų bazės schemos, ir susiejimo modelio (MDL).


Kadangi Entity Framework dirba su duomenimis, natūralu kad Microsoft adaptavo ir LINQ technologiją, kuri gavo LINQ to Entity pavadinimą. Apart LINQ technologijos, Entity Framework turi specialią, darbui su objektais orientuotą, SQL užklausų versiją eSQL (Entity SQL).


Kita svarti Entity Framework sąvoka – savybių klientas (Entity Client). Jis atsako už keletą dalykų: už prisijungimą prie duomenų bazės, už verslo objektų generavimą ir už objekto konteksto generavimą. Prisijungimas prie duomenų bazės apima ne tik prisijungimo eilutės aprašą, bet ir naudojamus metaduomenis (CSDL, SSDL ir MDL).  Objekto kontekstas – tai griežtai tipizuotas fasadas, per kurį operuojama visais sugeneruotais verslo objektais.


Manau tiek pradinės teorijos, antroje straipsnio dalyje aprašysiu darbo pagrindus su Entity Framework. Iki tol, siūlau visiems parsisiųsti ADO.NET Entity Framework Beta 3 ir jam skirtus įrankius ADO.Net Entity Framework Tools Dec 07 CTP. Entity Framework reikalauja Visual Studio 2008, kurio bandomąją versiją galite parsisiųsti nemokamai.


Tiek šiam kartui ir laukite antros dalies!

Rodyk draugams

Lietuviška .NET vartotojų grupė (prasidėjo…)

Parašė Sergejus | 2007-12-14 20:34

Taigi šiandien įvyko pirmasis .NET vartotojų grupės steigiamojo komiteto susirinkimas. Jo metu aptarėme grupės viziją, formatą ir panašaus pobūdžio klausimus. Liko dar keletas atvirų klausimų, bet kito susitikimo metu tikiuosi į visus klausimus turėsime atsakymus. Tad žinokite, darbas prasidėjo, kas negali nedžiuinti.


P.S. Jeigu turite kokių pasiūlymų - rašykite!

Rodyk draugams

Koncepcija programinė įranga + interneto paslaugos

Parašė Sergejus | 2007-12-13 08:25

Vakar teko dalyvauti Microsoft koncepcijos pristatyme “Programinė įranga + interneto paslaugos” (Software + Services, S+S), skirtame spaudos atstovams (hmm… nuo kada aš tapau spaudos atstovu). Apie šią koncepciją aš jau esu girdėjęs ir TechEd Developers ir prieš tai vykusioje partnerių konferencijoje, bet tik vakar ji buvo oficialiai pristatyta Lietuvoje.


Pagrindinė “Programinė įranga + interneto paslaugos” vizijos esmė - sukurti tam tikrą tarpinį modelį tarp įprastos instaliuojamos programinės įrangos ir interneto aplikacijų. Koncepcija grįsta “programine įranga kaip paslauga” (Software as a Services, SaaS), į paslaugas orientuotu kūrimu (service-oriented development) ir Web 2.0 principais. “Programinė įranga + paslaugas” nėra Microsoft atradimas, panašius dalykus daro Google su Google Desktop, Apple su iTunes ir daugelis kitų kompanijų. Visi jie bando praplėsti įprastą programinę įrangą interneto paslaugomis arba interneto paslaugas priartinti prie įprastos programinės įrangos.


Asmeniškai man kas patinka šioje vizijoje - jeigu kas žadama bus realizuota, mes galėsime judėti iš vienos vietos į kitą, nuo vieno įrenginio prie kito išlaikant visus mūsų duomenis bei nustatymus. Šaunu! Belieka tik laukti “Programinė įranga + interneto paslaugos” realizacijos.

Rodyk draugams

Išleisti ASP.NET praplėtimų CTP

Parašė Sergejus | 2007-12-10 21:31

Šiandien Microsoft kūrimo padalinio direktorius Scott Guthrie paskelbė apie ASP.NET praplėtimų CTP versijos išleidimą. Dabar visi norintys gali išbandyti ASP.NET MVC karkasą, apie kurį jau esu  rašęs. ASP.NET praplėtimai taip pat apima Silverlight komponentus, pagerintą AJAX palaikymą, REST tipo ASP.NET duomenų servisus bei dinaminį ASP.NET puslapių generavimą paremtą duomenimis (dar žinoma angliškai kaip scaffolding). Daugiau apie ASP.NET praplėtimus galite perskaityti čia.

Rodyk draugams

Paprastesnis DBNull panaudojimas

Parašė Sergejus | 2007-12-06 19:37

Norėčiau pasidalinti vienu atradimu: vietoje to, kad DBNull reikšmės patikrinimui naudoti kodą, panašų į

tai galima padaryti žymiai elegantiškiau

Tai įmanoma dėl to, kad DBNull turi vieną vienintelį lauką Value, todėl jeigu objektas yra DBNull tipo, tai jis yra ir DBNull.Value.

P.S. Straipsnių skaičius truputi sumažėjo dėl to, kad aktyviai ruošiuosi pirmam .NET vartotojų grupės steigiamojo komiteto susirinkimui. Tiek žinių šiam kartui…

Rodyk draugams

Abipusis duomenų susiejimas ASP.NET (2 dalis)

Parašė Sergejus | 2007-12-03 00:08

Praeitoje abipusio susiejimo dalyje aš aprašiau standartines ASP.NET 2.0 galimybes. Kaip ir buvo pastebėta, to funkcionalumo ne visada užtenka realaus pasaulio aplikacijoms. Šią savaitę teko ieškoti tinkamesnio sprendimo ir apsistojau ties trijų metų senumo straipsniu „Using Reflection to Bind Business Objects to ASP.NET Form Controls“. Pagrindinė metodo esmė:

Jeigu, pavyzdžiui, norima susiesi TextBox elementą su objekto Vartotas savybe Vardas, užtenka TextBox elementui suteikti ID „Vardas“, o metodui kaip susiejimo objektą perduoti Vartotoją. Refleksijos pagalba objekto savybės reikšmė bus priskirta TextBox elemento Text savybei, o vėliau modifikuota reikmė vėl bus priskirta objekto savybei. Šiame etape ypač svarbu teisingai konvertuoti string reikšmę į atitinkamą savybės tipą.

Pirma ką pakeičiau išeities tekstuose, įgalinau sąrašuose null reikšmių apdorojimą. Taipogi pakeičiau keletą kitų smulkių susiejimo apdorojimo niuansų. Viena svarbiausių problemų iškilo, bandant paversti tekstinę reikšmę į nullable int (int?) tipą. Pasirodo, standartinis Convert.ChangeType nepaiko nullable tipų. Problemai išspręsti pasinaudojau modifikuotu ChangeType metodu, galinčiu teisingai konvertuoti į nullable tipus. Šį metodą teko irgi minimaliai pakeisti, kad tuščia eilutė būtų interpretuojama kaip null reikšmė. Žemiau pateikiu savo modifikuotą abipusio susiejimo variantą.

Metodas, skirtas susieti objektą su valdymo elementais:

kur FindAndSetControlProperty atrodo taip:

Metodas, skirtas susieti valdymo elementą su objektu:

kur FindAndGetControlProperty atrodo taip:

Modifikuotas ChangeType metodas:

Dabar tam, kad pasinaudoti abipusiu duomenų susiejimų, užtenka kelių eilučių:

Abu CS failus galite atsisiųsti.

Taigi tiek šiam kartui, laukiu jūsų pasiūlymų dėl tolesnio abipusio duomenų susiejimo pagerinimo!

Rodyk draugams