160 likes | 358 Views
Kako zmešati LINQ, ADO.NET in SQL Server. { mag. Denis Giacomelli, MCAD }. Vsebina. “Katmai” za razvijalce LINQ ADO.NET Entity Framework Povzetek Vprašanja. “Katmai” - SQL Server 2008. Podatkovni tipi za datum in čas date (3 byte, 1.1.0001 – 31.12.9999, nat. 1 dan)
E N D
Kako zmešati LINQ, ADO.NET in SQL Server {mag. Denis Giacomelli, MCAD}
Vsebina • “Katmai” za razvijalce • LINQ • ADO.NET Entity Framework • Povzetek • Vprašanja
“Katmai” - SQL Server 2008 • Podatkovni tipi za datum in čas • date (3 byte, 1.1.0001 – 31.12.9999, nat. 1 dan) • time (5 bytov, 0 – 23:59:59.9999999, nat. 100 ns) • datetime2 (8 bytov, date + time) • datetimeoffset (10 bytov, datetime2) • datetime (1.1.1753 - 31.12.9999 23:59:59.997, nat. 0.333 s) • smalldatetime (1.1.1900 – 6.6.2079 23:59:59, nat. 1 min)
“Katmai” - SQL Server 2008 • Podatkovni tipi za datum in čas DEMO
“Katmai” - SQL Server 2008 • Podatkovni tip Hierarchyid • Za hierarhične strukture: organizacijska struktura, kosovnica, datotečni sistem, itd. • Binarni podatkovni tip • Pri vnašanju podatkov moramo vrednost tega polja “izračunati” DEMO
“Katmai” - SQL Server 2008 • Podatkovni tip Hierarchyid • Iskanje po tabeli z uporabo indeksov: a) v globino b) v širino hierarchyid clustered hierarchyid, level unique
“Katmai” - SQL Server 2008 • Podatkovni tip Hierarchyid DEMO
“Katmai” - SQL Server 2008 • MERGE • Izvede ukaze INSERT, UPDATE, DELETE na ciljni tabeli glede na rezultat povezave z izvorno tabelo • Trigerji se normalno izvedejo • Lepša programska koda DEMO
LINQ - osnove • Language INtegrated Query • Brez LINQ-a: • Mešanje C# kode z SQL kodo • Poizvedbe kot tekst • V poizvedbah je veliko poslovne logike • Napake se pokažejo kot izvajalne namesto prevajalne • Ni nadomestek za ADO.NET, ampak je njegova dopolnitev!
LINQ - osnove • Kaj predstavlja LINQ za programerja? • DataContext – podatkovna baza • Table<> - podatkovna tabela DEMO
LINQ - poizvedbe • Kdaj se poizvedba dejansko izvede? • Ne takoj! • Šele na zahtevo (foreach, GetEnumerator()) • Ampak vedno na zahtevo, kar je lahko zelo nevarno • Temu se izognemo s klicem metode ToList() ali ToArray() • Kako se poizvedba dejansko izvede? • Kot SQL ukaz na SQL Server-ju (ne kot IL!) • Poglejmo SQL Profiler ali je to res ... DEMO
LINQ - relacije • Definiramo jih lahko v poizvedbi • Definiramo jih lahko z atributi v razredu DEMO
LINQ – spremembe podatkov • Ali je LINQ namenjen samo branju? • SubmitChanges() • Kaj pa transakcije? • using(TransactionScope ts ...) • SqlMetal – Entity Class Generator Tool DEMO
Povzetek • SQL Server 2008 (“Katmai”) z novimi podatkovnimi tipi in ukazi (ki pa trenutno v C# še niso podprti ) • LINQ je “dozorel” in dopolnjuje oziroma razširja ADO.NET • LINQ, ADO.NET in SQL Server se dobro mešajo med sabo
Vprašanja, diskusija ... hvala za pozornost!