agosto 2008 Blog Posts

System.Transactions.IEnlistmentNotification: un approfondimento.

Qualche giorno fa ho avuto modo di (s)parlare di come poter implementare IEnlistmentNotification in una propria classe di business al fine di realizzare un resource manager che sia utilizzabile all’interno di un TransactionScope. Quello che però ho dato per scontato è che si sappia come funziona il giochino. Ho già avuto modo di parlarne ampiamente in un articolo per MSDN ma alcuni dettagli forse mancano ed è giusto riprenderli qui, partiamo da questo snippet: using( TransactionScope scope = new TransactionScope() ) { ...

posted @ martedì 26 agosto 2008 21:35 | Feedback (0)

Sql Compact 3.5 e le transazioni

al fine di fare un po’ di esperimenti sto usando il “nuovo” (si fa per dire) SqlCe 3.5 SP1 (o come diavolo si chiama… ;-)) ma sono incappato in un fastidioso comportamento che non è semplice da aggirare. Se cercate di racchiudere una serie di “SqlCeCommand” in un blocco “TransactionScope” vi beccate una sonora Exception che vi informa che “The Connection object cannot be enlisted in the Transaction”… il motivo è molto semplice SqlCe non supporta le transazioni distribuite (nella versione precedente 3.1 non c’era neppure nessun supporto per System.Transactions, quindi non lamentiamoci troppo) quindi...

posted @ giovedì 14 agosto 2008 08:02 | Feedback (2)

System.Transactions.IEnlistmentNotification: interessante… decisamente!

Dunque, supponiamo di avere il seguente stralcio di codice: IChangeTrackingServiceContainer container = ChangeTrackingServiceContainer.GetProvider(); IChangeTrackingService tracking = container.CreateTrackingService(); DataContextProcess dataContext = new DataContextProcess(); IEntityCollection<IPerson> allPersons = dataContext.GetAll<IPerson>(); IPerson first = allPersons.Where( p => p.LastName == "Servienti" ).First(); first.FirstName = "Mauro"; if( tracking.IsChanged ) {     IEnumerable<IAdvisedAction> advisory = tracking.GetAdvisory();     dataContext.Commit( advisory );     tracking.AcceptChanges(); } Nulla di trascendentale… ma come molti di voi sapranno, se avete mai dato un occhio a NSK o vi siete mai cimentati nella realizzazione di una Unit of Work, quello che ci si aspetta è che il lavoro fatto dal metodo Commit() del data context sia come...

posted @ mercoledì 13 agosto 2008 09:15 | Feedback (3)

[OT] La “Grande Punto” SP1…

Tempo fa avevo accennato che ero diventato un felice possessore di una “Windows Mobile enabled Car”, bene da un paio di mesi ho installato il Service Pack 1… per l’esattezza ho cambiato macchina e adesso ho una nuova fiammante Fiat Grande Punto “vNext”, in soldoni il restyling, che però ha apportato tutta una serie di migliorie alla parte software della macchina. Non solo è migliorata la parte entertainment gestita da Windows Mobile for Automotive, adesso non ho più mezza magagna con l’iPod e ho finalmente i miei 8k brani a disposizione, ma è decisamente migliorata la parte di gestione...

posted @ mercoledì 13 agosto 2008 07:50 | Feedback (0)

VS2008 SP1 e Net fx 3.5 SP1

Non ci credo che sono il primo ad accorgersene… di solito arrivo sempre giorni e giorni dopo… ma vabbè :-D Habemus SP1: Visual Studio: http://www.microsoft.com/downloads/details.aspx?FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7&displaylang=en Net fx: http://www.microsoft.com/downloads/details.aspx?FamilyID=fbee1648-7106-44a7-9649-6d9f6d58056e&displaylang=en Aggiungo: TFS 2008 SP1: http://www.microsoft.com/downloads/details.aspx?FamilyID=9e40a5b6-da41-43a2-a06d-3cee196bfe3d&DisplayLang=en .m

posted @ lunedì 11 agosto 2008 18:56 | Feedback (5)

Una nota curiosa sulla keyword “throw”

Stamattina mentre sistemavo un po’ (un bel po’…) di warning generati dalla Code Analysis ho “scoperto” una cosa che non sapevo, come se fosse una delle poche ;-). Osserviamo il seguente esempio: public void MyMethod() {     try     {         //Do something interesting     }     catch( Exception x )     {         tracer.Critical( x );         throw x;    ...

posted @ venerdì 1 agosto 2008 08:36 | Feedback (4)