PDC05: ADO.NET 2.0: Advanced Data Access Patterns

Detta pass blev en härlig genomkörare av tre saker: SQLBulkCopy, SQLDependency och Cache:ning av data.

Jobbar man med stora datamängder som ska det ska uppdateras så blir det väldigt segt om man ska göra en insert/update/delete-fråga i taget och loopa genom dessa via ADO.NET. Tumregeln i detta läge är istället att skapa en temporär tabell i databasen, läsa in data med SQLBulkCopy i ADO.NET 2.0 och sedan göra tre stycken anrop i databasen för att utföra dessa operationer. Prestanda ökar avsevärt med denna lösning.

DataSet:en i .NET Framework 2.0 har fått stora prestandaförbättringar och är väl lämpade att lagra stora datamängder i som cache:as på exempelvis en webbserver. Istället för att sätta en tidsbegränsning på hur länge ett objekt ska leva så kan man skapa ett beroende mot det data man hämtat upp ur databasen. På detta sätt invalideras det som cache:ats när data förändras i de underliggande tabellerna. När datamängderna är stora är det dock ineffektivt att invalidera alla rader och läsa upp dem då endast en rad förändrats. En lösning är att partitionera upp raderna i ett DataSet och sedan endast invalidera en partion när data förändrats i denna. Mn kan nämligen ha flera SQLDependency på samma koppling mot databasen.

Passet avslutades med att visa hur man kan bygga upp logik för att kunna jobba med DataSet och join:a dessa mot varandra. Det man vill åstadkomma är att kunna utföra filtrering, sortering och sammanslagning av det cache:ade datat.

Bäst: Partionering av cache:at data i samma DataSet.

Sämst: Att vi inte fick se en demo på att strömma data från en klient till en tabell i databasen asynkront via en webbtjänst och SQLBulkCopy.

Coolast: Ramverket för att kunna join:a över DataSet.