<?xml version="1.0" encoding="Windows-1252"?><feed version="0.3" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns="http://purl.org/atom/ns#" xml:lang="it-it"><title>SMWorld.NET - Il blog di Stefano Mostarda</title><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/SM15455/" /><tagline type="text/html">SMWorld.NET - Il blog di Stefano Mostarda</tagline><id>http://blogs.aspitalia.com/SM15455/</id><generator url="http://feed.aspitalia.com/" version="ASPItalia.com">feed.ASPItalia.com 'Weyoh' 4.8.715</generator><author><name>SMWorld.NET - Il blog di Stefano Mostarda</name><url>http://blogs.aspitalia.com/SM15455/</url></author><modified>2008-07-20T16:27:55+01:00</modified><entry><title>Entity Framework ed il mapping</title><id>http://blogs.aspitalia.com/sm15455/post2326/Entity-Framework-Mapping.aspx</id><created>2008-07-15T00:34:00+01:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2326' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;Ormai utilizzo Entity Framework da quasi un anno, e presso un cliente lo sto facendo adottare perch&#232; questo vuole utilizzare solo tecnlogia proprietaria Microsoft. LINQ To SQL non &#232; abbastanza potente quindi la scelta &#232; ovvia.&lt;br /&gt;Quando mi ritrovo a spiegare Entity Framework l'argomento pi&#249; complicato non &#232; l'Object Tracking o il supporto per scenari su pi&#249; layer, logici o fisici che siano, o l'EntitySql; l'argomento pi&#249; complesso &#232; il Mapping. Senza dubbio il mapping in un ORM &#232; il concetto pi&#249; semplice da capire, ma con Entity Framework nonostante il facile compito si &#232; riusciti a colpire la classica mosca col bazzuca, ma tant'&#232; e cos&#236; ce lo teniamo.&lt;br /&gt;All'inizio, ho utilizzato il designer in ctp ma la mia voglia di imparare era tale che dopo pochi giorni sono passato direttamente a fare le cose a manina. Passare da dei tool che ti creano tuto da video a scrivere un xml a mano &#232; pura follia, ma ormai non riesco a farne a meno, il designer proprio non lo so usare :)&lt;br /&gt;Alla lunga per&#242; paga perch&#232; scrivere il mapping a mano e verificare gli errori fa capire quali sono le necessit&#224; di Entity Framework e fa pi&#249; o meno intuire come lavora il motore. &lt;br /&gt;Ai Community Days, stavo impazzendo con Roberto perch&#232; lui non riusciva a riprodurre l'ereditariet&#224; Table Per Type e io invece.... nemmeno :). Lui utilizzava il tool e io non sapevo nemmeno cosa stesse facendo quindi mi sono buttato sul file XML. Dopo un vago girare a vuoto, mi sono accorto che nel file SSDL (quello della descrizione dello storage e occhio ho detto storage e non database) non c'era la descrizione dell'associazione tra la tabella primaria e quella secondaria con i campi aggiuntivi. Dimenticando di descrivere quest'associazione, Entity Framework non sapeva come mettere in join le tabelle e generava un'eccezione. Qui si scatena un putiferio; le eccezioni di mapping sono la cosa pi&#249; oscura del mondo; per la semplice mancanza dell'associazione siamo finiti per avere un messaggio di perdita di dati dovuta alla non conoscenza del lato C della tabella padre. Pensandoci bene, uno particolarmente malato forse potrebbe anche arrivare a capire l'errore ma non sono molto fiducioso.&lt;br /&gt;&lt;br /&gt;Insomma, tutto questo per dire una cosa: fatevi i file XML a mano. Probabilmente la prima settimana riuscirete a mappare solo 4 tabelle sulle classi analoghe sputando anche svariato sangue, ma state tranquilli che lo sforzo verr&#224; ampiamente ripagato dopo poco tempo. Personalmente adoro questa piccola &lt;a href=&quot;code.msdn.microsoft.com/EFMappingHelper &quot;&gt;applicazione&lt;/a&gt; che &#232; una miniera di informazioni per il mapping.&lt;br /&gt;&lt;br /&gt;Stay Tuned...&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/ADO.NET_Entity_Framework/&quot; rel=&quot;tag&quot;&gt;ADO.NET Entity Framework&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ORM/&quot; rel=&quot;tag&quot;&gt;ORM&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.5/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/LINQ/&quot; rel=&quot;tag&quot;&gt;LINQ&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/LINQ_to_SQL/&quot; rel=&quot;tag&quot;&gt;LINQ to SQL&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/sm15455/post2326/Entity-Framework-Mapping.aspx"/><issued>2008-07-15T00:34:00+01:00</issued><modified>2008-07-15T00:34:00+01:00</modified><slash:comments>2</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2326/Entity-Framework-Mapping.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2326.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2326</trackback:ping></entry><entry><title>Community Days 2008: il giorno dopo</title><id>http://blogs.aspitalia.com/sm15455/post2320/Community-Days-2008-Giorno.aspx</id><created>2008-07-11T14:17:00+01:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2320' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;A distanza di ormai 15 ore dalla chiusura dei fantastici Community Days 2008 mi ritrovo a scrivere le mie impressioni.&lt;br /&gt;&lt;br /&gt;Innanzitutto l'agenda. Ricordo nel lontano mese di Maggio davanti ad una pizza 4 loschi individui: io, &lt;a href=&quot;http://blogs.aspitalia.com/daniele&quot;&gt;Daniele&lt;/a&gt;, &lt;a href=&quot;http://blogs.ugidotnet.org/pape&quot;&gt;Andrea&lt;/a&gt; ed &lt;a href=&quot;http://blogs.aspitalia.com/imperugo&quot;&gt;Ugo&lt;/a&gt;. Lo scopo della cena era quello di mantenere la concentrazione per pi&#249; di 20 minuti consecutivi per stabilire le track. A fine serata convinsero le idee di: Andrea per la track Underground, mia e di Daniele per server Infrastructure+Application Development, tutti SP1+Tutorial. Direi che nel complesso l'impostazione generale &#232; venuta piuttosto bene e dalla risposta del pubblico direi che almeno per stavolta possiamo autodarci una pacca sulla spalla :D.&lt;br /&gt;&lt;br /&gt;Passiamo alle sessioni. Innanzitutto spaziale quella di &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/&quot;&gt;Marco&lt;/a&gt; e &lt;a href=&quot;http://blogs.aspitalia.com/novecento&quot;&gt;Alessio&lt;/a&gt;; non l'ho vista ma ci fosse stata una sola persona di quelle presenti che mi ha detto il contrario (ed erano in tanti). Alla prima esperienza si sono subito fatti trovare pronti. Che dire: eccezionali. Un grande complimento va a &lt;a href=&quot;http://blogs.aspitalia.com/ricciolo&quot;&gt;Cristian&lt;/a&gt; che, grazie alla sessione che Daniele gli ha ammollato, &#232; riuscito ad avere un bellissimo feedback :D. Non parliamo della sua in 3D dove ha fatto iperfaville (trigonometria applicata a parte). &lt;a href=&quot;http://blogs.aspitalia.com/rickyvr/&quot;&gt;Ricky&lt;/a&gt; semplicemente fantastico, nono ho seguito nemmeno la sua di sessione, ma da quando &#232; finita a quando la gente l'ha lasciato andare sono passati quasi 40 minuti e questo &#232; indice di alto gradimento. Poi ci sono io con le mie 3 sessioni. Quella su ASP.NET presa in ereditariet&#224; da Daniele &#232; stata iperdivertente quanto faticosa, parlare dei DynamicData e di Routing per 90 minuti &#232; stata una cosa faticosa ma che ha prodotto ottimi risultati. A quella sulla sicurezza con WCF eravamo pochi intimi ma quei pochi mi sembra abbiano apprezzato. Per quella sulle applicazioni web-service based devo dire che Ugo mi ha dato soddisfazione. Alla sua prima esperienza era talmente teso che all'inizio non riusciva nemmeno ad alzare la testa ma una volta che si &#232; sciolto ha parlato di Dependency Injection come in pochi sanno fare. Inoltre, farla vedere la DI applicata alla pipeline di WCF per risparmiare centinaia di righe di codice ripetitivo, dire che queste cose le abbiamo sviluppate noi e che sono in produzione sul sito di MTV da un gusto particolare :). La sessione sicuramente meglio riuscita IMHO. E poi Ugo &#232; maschio si sa :).&lt;br /&gt;&lt;br /&gt;Non ho seguito quasi nessuna sessione, a parte un pezzo di quella su Entity Framework e un pezzo sulle architetture, ma ho sentito parlare la gente ed ho capito che in generale sono tutti rimasti estremamente soddisfatti di qualunque cosa abbiano visto.&lt;br /&gt;&lt;br /&gt;Infine una menzione per chi &#232; rimasto fuori: a &lt;a href=&quot;http://blogs.ugidotnet.org/topics/&quot;&gt;Mauro&lt;/a&gt; per il Context (lui sa perch&#232;), a &lt;a href=&quot;http://blogs.ugidotnet.org/robymes&quot;&gt;Roberto&lt;/a&gt; per la discussione (che spero andr&#224; avanti) su Entity Framework, ad &lt;a href=&quot;http://blogs.ugidotnet.org/box/&quot;&gt;Alessandro&lt;/a&gt; per il suo caro termine &amp;quot;picchiare&amp;quot;, Raf, Gab, Pietro, Mighell, Lica, Lorenzo alle Bahamas e a tutti coloro che non ho nominato per mancanza di memoria.&lt;br /&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/sm15455/post2320/Community-Days-2008-Giorno.aspx"/><issued>2008-07-11T14:17:00+01:00</issued><modified>2008-07-11T14:17:00+01:00</modified><slash:comments>1</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2320/Community-Days-2008-Giorno.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2320.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2320</trackback:ping></entry><entry><title>WCF LINQ To SQL il SP1 e la serializzazione</title><id>http://blogs.aspitalia.com/sm15455/post2309/WCF-LINQ-SQL-SP1-Serializzazione.aspx</id><created>2008-07-06T19:30:00+01:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2309' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;Oggi stavo facendo una prova con LINQ To SQL e ad un certo punto ho notato che il codice delle classi autogenerato da Visual Studio non inserisce pi&#249; gli attributi DataMember e DataContract per la serializzazione WCF. &lt;br /&gt;A questo punto ho creato un servizio WCF ed ho esposto la classe e questa veniva serializzata correttamente. Confesso che lo sconforto mi &#232; preso un pochino perch&#232; non capivo cosa stesse succedendo. Armato di reflector vado ad esaminare l'assembly e scopro che gli attributi in realt&#224; sono l&#236;.&lt;br /&gt;Andando pi&#249; a fondo, ho scoperto che una dele nuove caratteristiche del SP1 &#232; che WCF non ha pi&#249; bisogno degli attributi di mapping poich&#232; questi vengono automaticamente iniettati dal compilatore sul'interfaccia pubblica di una classe. Ovviamente, si pu&#242; modificare il tutto inserendo a mano l'attributo DataContract sulla classe e DataMember sulle sole propriet&#224; da esporre con WCF.&lt;br /&gt;&lt;br /&gt;Buono a sapersi.... ma uno dei cardini di WCF non era che l'esposizione delle propriet&#224; doveva essere esplicitata dallo sviluppatore?&lt;br /&gt;&lt;br /&gt;Stay Tuned...&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework/&quot; rel=&quot;tag&quot;&gt;.NET Framework&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.5/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/LINQ/&quot; rel=&quot;tag&quot;&gt;LINQ&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/LINQ_to_SQL/&quot; rel=&quot;tag&quot;&gt;LINQ to SQL&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Windows_Communication_Foundation/&quot; rel=&quot;tag&quot;&gt;Windows Communication Foundation&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/sm15455/post2309/WCF-LINQ-SQL-SP1-Serializzazione.aspx"/><issued>2008-07-06T19:30:00+01:00</issued><modified>2008-07-06T19:30:00+01:00</modified><slash:comments>2</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2309/WCF-LINQ-SQL-SP1-Serializzazione.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2309.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2309</trackback:ping></entry><entry><title>Una noisa limitazione di LINQ To SQL</title><id>http://blogs.aspitalia.com/sm15455/post2292/Noisa-Limitazione-LINQ-SQL.aspx</id><created>2008-05-31T21:47:00+01:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2292' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;Lo sappiamo tutti: LINQ To SQL &#232; stato concepito appositamente con delle limitazioni. Mapping 1:1 con il database (con conseguente obbligatoriet&#224; di avere una classe di correlazione per il mapping many-to-many), ereditariet&#224; che non supporta tutti e 3 i modelli, classi apposite per gestire riferimenti a entit&#224; (EntitySet e EntityRef), ecc ecc.&lt;br /&gt;&lt;br /&gt;Dal mio punto di vista, la prima e la seconda limitazione sono accettabili per un tool che nasce con lo scopo di gestire progetti semplici. La terza, tuttavia, proprio non la accetto. Per motivi di Lazy Loading e riferimenti al DataContext, EntitySet non &#232; serializzabile. Questo significa che se in un servizio WCF proviamo a esporre un'entit&#224; Fattura che ha una EntitySet di oggetti DettaglioFatttura, riceviamo una bella eccezione di serializzazione a runtime. &lt;br /&gt;&lt;br /&gt;Il workaround &#232; presto trovato, basta evitare di mettere il DataMember sulla propriet&#224; in questione e farne una copia che espone una lista generica di oggetti DettaglioFattura, e non un EntitySet, preoccupandosi di valorizzarla correttamente. Facendo cos&#236; i problemi si risolvono, ma il disappunto rimane per una cosa che poteva essere fatta&#160; meglio e non costringerci al workaround.&lt;br /&gt;&lt;br /&gt;P.S. A nessun Ughetto &#232; stato fatto male durante la stesura di questo post, anzi, &#232; lui che ha fatto del male a me :D&lt;br /&gt;&lt;br /&gt;Stay Tuned...&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/LINQ_to_SQL/&quot; rel=&quot;tag&quot;&gt;LINQ to SQL&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Windows_Communication_Foundation/&quot; rel=&quot;tag&quot;&gt;Windows Communication Foundation&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.5/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/LINQ/&quot; rel=&quot;tag&quot;&gt;LINQ&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Database/&quot; rel=&quot;tag&quot;&gt;Database&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/sm15455/post2292/Noisa-Limitazione-LINQ-SQL.aspx"/><issued>2008-05-31T21:47:00+01:00</issued><modified>2008-05-31T21:47:00+01:00</modified><slash:comments>3</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2292/Noisa-Limitazione-LINQ-SQL.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2292.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2292</trackback:ping></entry><entry><title>Il nuovo speciale in arrivo su LINQ</title><id>http://blogs.aspitalia.com/sm15455/post2261/Speciale-Arrivo-LINQ.aspx</id><created>2008-03-28T11:37:00+01:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2261' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;Se &#232; vero che alla follia non c'&#232; mai fine allora non so veramente dove andremo a finire. Non bastavano 2 &lt;a href=&quot;http://www.linqitalia.com/&quot;&gt;siti&lt;/a&gt; &lt;a href=&quot;http://www.silverlightitalia.com/&quot;&gt;nuovi&lt;/a&gt; di zecca dedicati alle pi&#249; grandi novit&#224; di casa Microsoft degli ultimi anni? Non bastava uno &lt;a href=&quot;http://www.aspitalia.com/focuson/1022/Speciale-Lancio-Visual-Studio-2008-SQL-Server-2008.aspx&quot;&gt;speciale &lt;/a&gt;mastodontico su tutto il framework 3.5? Non bastava un Community After Hour durante il lancio di Visual Studio? Non bastavano &lt;a href=&quot;http://www.linqitalia.com/articoli/&quot;&gt;articoli&lt;/a&gt;, &lt;a href=&quot;http://www.linqitalia.com/script/&quot;&gt;script&lt;/a&gt;, &lt;a href=&quot;http://www.aspitalia.com/focuson/&quot;&gt;focuson&lt;/a&gt;, &lt;a href=&quot;http://blogs.aspitalia.com/&quot;&gt;blog&lt;/a&gt;?&lt;br /&gt;Beh, la risposta &#232;: NO.&lt;br /&gt;&lt;br /&gt;Dalla prossima settimana arricchiremo la nostra offerta di contenuti aprendo le porte ad un nuovo format: lo screencast. Come &#232; ormai nostra usanza, affronteremo questa nuova sfida con uno &lt;a href=&quot;http://www.aspitalia.com/focuson/1030/Screencast-Dedicati-LINQ-Speciale-Aprile.aspx&quot;&gt;speciale&lt;/a&gt;. La sezione &lt;a href=&quot;http://media.aspitalia.com/&quot;&gt;media&lt;/a&gt; esiste gi&#224; da diverso tempo, ma contiene registrazioni di sessioni che abbiamo tenuto per le varie conferenze. Questa volta abbiamo deciso di fare qualcosa di apposito.&lt;br /&gt;&lt;br /&gt;6 screencast su LINQ e tutti i suoi flavour dalla durata decisamente breve (10-15 minuti) e dal taglio esclusivamente pratico. Non posso nascondere una punta di orgoglio nel dire queste cose perch&#232; il primo sito del network ad affrontare questa nuova avventura &#232; LINQItalia. &lt;br /&gt;&lt;br /&gt;Come sempre, anche se gli screencast li faccio io, non sono di certo il solo artefice di questo speciale; &lt;a href=&quot;http://blogs.aspitalia.com/novecento/&quot;&gt;Alessio&lt;/a&gt; ha affrontato la parte Player (In Siverlight) mentre &lt;a href=&quot;http://blogs.aspitalia.com/daniele/&quot;&gt;Daniele&lt;/a&gt; ha come sempre coordinato le attivit&#224;.&lt;br /&gt;&lt;br /&gt;Insomma, ad Aprile niente dolce dormire, ma tanti nuovi contenuti per la community :). E poi chiss&#224;, se le cose vanno bene, mica ci si deve fermare qui ;)&lt;br /&gt;&lt;br /&gt;Stay tuned...&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.5/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/LINQ/&quot; rel=&quot;tag&quot;&gt;LINQ&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/LINQ_to_SQL/&quot; rel=&quot;tag&quot;&gt;LINQ to SQL&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/LINQ_to_XML/&quot; rel=&quot;tag&quot;&gt;LINQ to XML&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/XML/&quot; rel=&quot;tag&quot;&gt;XML&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/sm15455/post2261/Speciale-Arrivo-LINQ.aspx"/><issued>2008-03-28T11:37:00+01:00</issued><modified>2008-03-28T11:37:00+01:00</modified><slash:comments>0</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2261/Speciale-Arrivo-LINQ.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2261.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2261</trackback:ping></entry><entry><title>LINQItalia.com e SilverlightItalia.com sono online</title><id>http://blogs.aspitalia.com/sm15455/post2214/LINQItalia.com-SilverlightItalia.com-Online.aspx</id><created>2008-01-31T00:21:00+01:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2214' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;In questi minuti i 2 nuovi pargoli del network stanno emettendo i loro primi vagiti. Per me che sar&#242; anche Content Manager di LINQItalia.com il momento &#232; particolarissimo.&lt;br /&gt;&lt;br /&gt;Personalmente provo un misto tra gioia, orgoglio e terrore. &lt;br /&gt;Gioa perch&#232; il fatto di voler affrontare questa nuova sfida significa che sento di potercela fare. &lt;br /&gt;Orgoglio perch&#232; essere Content Manager di un sito mi fa sentire apprezzato per quello che ho fatto fino ad adesso.&lt;br /&gt;Terrore perch&#232; gestire un sito &#232; una cosa che non ho mai fatto e nonostante le rassicurazioni dei compagni di viaggio sono ancora sotto terrorizzato :).&lt;br /&gt;&lt;br /&gt;Per quanto riguarda &lt;a href=&quot;http://www.linqitalia.com/&quot;&gt;LINQItalia.com&lt;/a&gt; le cose in cantiere sono tante; da qui alla fine della stagione ci saranno contenuti come articoli e script ma stiamo pensando anche a delle succulente novit&#224; che siamo sicuri faranno felici molti di voi. :)&lt;br /&gt;&lt;br /&gt;Il primo passo &#232; fatto, non mi rimane che fare un grande in bocca al lupo ad &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/&quot;&gt;Alessio&lt;/a&gt; e &lt;a href=&quot;http://blogs.aspitalia.com/novecento/&quot;&gt;Marco&lt;/a&gt; che come me si sono imbarcati in questa avventura (loro gestiscono &lt;a href=&quot;http://www.silverlightitalia.com/&quot;&gt;SilverlightItalia.com&lt;/a&gt; n.d.r) ad augurare un felice LINQ a tutti :).&lt;br /&gt;&lt;br /&gt;Stay Tuned...&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.5/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/LINQ/&quot; rel=&quot;tag&quot;&gt;LINQ&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Silverlight/&quot; rel=&quot;tag&quot;&gt;Silverlight&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/XAML/&quot; rel=&quot;tag&quot;&gt;XAML&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/sm15455/post2214/LINQItalia.com-SilverlightItalia.com-Online.aspx"/><issued>2008-01-31T00:21:00+01:00</issued><modified>2008-01-31T00:21:00+01:00</modified><slash:comments>0</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2214/LINQItalia.com-SilverlightItalia.com-Online.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2214.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2214</trackback:ping></entry><entry><title>FWC il giorno dopo</title><id>http://blogs.aspitalia.com/sm15455/post2207/FWC-Giorno.aspx</id><created>2008-01-16T10:27:00+01:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2207' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;A distanza di una pizza ed una bella dormita dalla fine della conferenza di ieri a L'Aquila &#232; arrivato il momento di tirare le somme di una giornata davvero bella.&lt;br /&gt;In realt&#224; la nostra esperienza parte da luned&#236; sera quando insieme agli organizzatori della conferenza siamo andati a cena fuori, sparandoci almeno 2 etti e mezzo di carbonara a testa ed una grigliata mista di carne che ci ha tenuti tutta la notte attaccati alla bottiglia :).&lt;br /&gt;&lt;br /&gt;Poi la conferenza; per me &#232; stato emozionante l'annuncio live di &lt;a href=&quot;http://blogs.aspitalia.com/daniele&quot;&gt;Daniele&lt;/a&gt; della nascita dei due &lt;a href=&quot;http://www.linqitalia.com/&quot;&gt;nuovi&lt;/a&gt; &lt;a href=&quot;http://www.silverlightitalia.com/&quot;&gt;pargoli&lt;/a&gt; (in articolare per LINQItalia visto che lo gestisco io).&lt;br /&gt;&lt;br /&gt;Poi si parte con Pietro che ha mostrato come IIS7 sia uno dei prodotti pi&#249; belli sfornati da Microsoft negli ultimi decenni. La pipeline integrata con ASP.NET &#232; un autentico gioiello.&lt;br /&gt;&lt;br /&gt;Dopo &#232; il mio turno, anzi il turno di LINQ To ... appena salito sul palco una delle prime domande che ho fatto al pubblico &#232; stata &amp;quot;Quanti di voi credono che LINQ sia solo un motore per lavorare con il database?&amp;quot;. Come era facile aspettarsi molti hanno alzato la mano perch&#232; ci&#242; che &#232; permeato durante la beta e anche adesso &#232; solo LINQ To SQL. Mi ero preparato a questa evenienza e quindi avevo gi&#224; impostato una sessione che non parlasse di LINQ To SQL ma di LINQ To Objects, LINQ To XML, LINQ To DataSet e solo alla fine di LINQ To SQL. La risposta del pubblico &#232; stata fantastica; decine di domande, curiosit&#224; e apprezzamenti per LINQ in tutti i suoi Flavours con un'ovvia preponderanza per LINQ To SQL.&lt;br /&gt;&lt;br /&gt;Dopo pranzo comincia Daniele, che dopo aver markettato per 40 minuti sulle nuove feature di Visual Studio 2008 ha finalmente cominciato a scrivere il codice che tutti si aspettavano. La sessione scorre via liscia, tra un bug e l'altro delle CTP Extension in Visual Studio, fino al momento delle domande dove la gente continuava a chiedere di LINQ pi&#249; che di ASP.NET a tal punto che siamo dovuti intervenire io e Pietro per rispondere.&lt;br /&gt;&lt;br /&gt;Infine &#232; il turno di Cristian (Silverlight) che snocciola animazioni con xaml, come se fossero noccioline (cubi che girano, si allargano, immagini che ruotano bottoni che interagiscono con javacsript etc etc.). Certo quando ha parlato di IChar, IBottle, TuoTubo e ScatolaDiSapone forse &#232; andato troppo oltre, ma proprio per questo gli vogliamo bene :). Nel complesso come parla lui di queste cose credo in Italia non ci sia veramente nessuno.&lt;br /&gt;&lt;br /&gt;Gli utlimi byte li dedico agli organizzatori Daniele e Stefano che hanno fatto davver un gran bel lavoro perch&#232; organizzare una conferenza non &#232; mai facile e ci sono molte pi&#249; cose da fare di quello che si immagini.&lt;br /&gt;&lt;br /&gt;Gli ultimissimi byte vanno invece alle persone che ad ogni conferenza affrontano il caldo, il freddo, il maltempo e qualunque catastrofe naturale pur di esserci. Domande, partecipazione, battute, curiosit&#224; e voglia di apprendere; questo &#232; stato grazie a voi un evento ancora pi&#249; bello.&lt;br /&gt;&lt;br /&gt;I byte finali vanno come saluto al mini-speaker Alessio Bochicchio che si destreggiava abilmente nella tombolata delle estrazioni dei premi :)&lt;br /&gt;&lt;br /&gt;Stay Tuned...&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework/&quot; rel=&quot;tag&quot;&gt;.NET Framework&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.5/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/10annidi/&quot; rel=&quot;tag&quot;&gt;10annidi&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET_3.5/&quot; rel=&quot;tag&quot;&gt;ASP.NET 3.5&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/IIS/&quot; rel=&quot;tag&quot;&gt;IIS&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/LINQ/&quot; rel=&quot;tag&quot;&gt;LINQ&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Silverlight/&quot; rel=&quot;tag&quot;&gt;Silverlight&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Visual_Studio/&quot; rel=&quot;tag&quot;&gt;Visual Studio&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Windows_Presentation_Foundation/&quot; rel=&quot;tag&quot;&gt;Windows Presentation Foundation&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Windows_Server/&quot; rel=&quot;tag&quot;&gt;Windows Server&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/XAML/&quot; rel=&quot;tag&quot;&gt;XAML&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/sm15455/post2207/FWC-Giorno.aspx"/><issued>2008-01-16T10:27:00+01:00</issued><modified>2008-01-16T10:27:00+01:00</modified><slash:comments>4</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2207/FWC-Giorno.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2207.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2207</trackback:ping></entry><entry><title>LINQ To SQL ed il Fetching</title><id>http://blogs.aspitalia.com/sm15455/post2193/LINQ-SQL-Fetching.aspx</id><created>2007-12-27T10:23:00+01:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2193' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;Partiamo da un concetto: LINQ To SQL &#232; fantastico. E' un ORM For Dummies nel senso che ha una facilit&#224; di apprendimento ed utilizzo semplicemente impressionante ed una serie di feature comunque sufficienti per poterci basare un'applicazione. Molti definiscono LINQ To SQL un ORM For Dummies perch&#232; limitato a SQL Server, non Persistence Ignorant e con feature molto ridotte rispetto a giganti come NHibernate; tuttavia, io credo sia solo invidia per l'intellisense in Visual Studio ed il Compile Time Checking delle query :).&lt;br /&gt;&lt;br /&gt;Eppure, nonostante tutto, ci sono quelle cose che sembrano punture di zanzare ma in realt&#224; sono pugnalate al cuore. La principale &#232;: &lt;span style=&quot;font-weight: bold;&quot;&gt;le politiche di fetching si possono impostare solo sul DataContext ed una sola volta&lt;/span&gt;. All'inizio, LINQ To SQL permetteva di decidere a livello di query come tirare gi&#249; le associazioni dal db, se in eager o in lazy loading. Per default, le entit&#224; associate venivano caricate in lazy con la possibilit&#224; di cambiare, tramite LoadOptions, in eager. Questa possibilit&#224;, in realt&#224;, rappresentava un problema per il team di sviluppo che doveva gestire una serie di casistiche di caricamento eccessive, quindi &#232; stata tagliata la testa al toro e si &#232; spostato il tutto sul DataContext invece che sulla singola query. &lt;br /&gt;&lt;br /&gt;Qui saltano fuori i doloretti. Se io volessi tirarmi gi&#249; una fattura ed i suoi dettagli, e poi un cliente ed i suoi ordini (il tutto in eager loading), e volessi utilizzare lo stesso DataContext l'unica via &#232; impostare a priori le politiche di fetching cio&#232; quando si crea il DataContext. Infatti, se lo facessi nel metodo che esegue la query, mi ritroverei con una bella eccezione quando recupero i clienti perch&#232; il fetching &#232; stato impostato gi&#224; una volta nel metodo che ritrova la fattura.&lt;br /&gt;&lt;br /&gt;Come detto, l'unica via &#232; impostare in fase di creazione del DataContext tutte le politiche di fetching che questo dovr&#224; seguire. Ovviamente la cosa va fatta contesualizzata; se la si facesse generalizzata, si caricherebbero sempre gli ordini di un cliente anche se si vuole recuperare solo il suo dettaglio. Per fare questo, &#232; la pagina stessa che deve inviare al DAL le informazioni su come caricare le cose che poi verrano cercate. Questo implica che se dobbiamo modificare una politica di fetching dobbiamo farlo in tutte le pagine coinvolte.&lt;br /&gt;&lt;br /&gt;Alla fine, dopo averci ravanato un p&#242; sopra, sono arrivato alla mia idea definitiva di come utilizzare LINQ To SQL in un 3 tier con tutti i compromessi che ne derivano, ma sar&#224; argomento di un post entro le 48 ore :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Stay Tuned...&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.5/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/LINQ/&quot; rel=&quot;tag&quot;&gt;LINQ&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ORM/&quot; rel=&quot;tag&quot;&gt;ORM&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/sm15455/post2193/LINQ-SQL-Fetching.aspx"/><issued>2007-12-27T10:23:00+01:00</issued><modified>2007-12-27T10:23:00+01:00</modified><slash:comments>1</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2193/LINQ-SQL-Fetching.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2193.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2193</trackback:ping></entry><entry><title>LINQ To SQL ed un problema di null</title><id>http://blogs.aspitalia.com/sm15455/post2186/LINQ-SQL-Problema-Null.aspx</id><created>2007-12-16T23:09:00+01:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2186' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;L'altro giorno mi stavo dilettando scrivendo una query LINQ per estrarre il prossimo numero di fattura per l'anno in corso. La query &#232; tutto sommato semplice:&lt;br /&gt;&lt;br /&gt;(from c in MyDataContext.Invoice&lt;br /&gt;where c.IssueDate.Year == DateTime.Now.Year&lt;br /&gt;select c.Number).Max()&lt;br /&gt;&lt;br /&gt;Ora il problema scatta per la prima fattura dell'anno. Infatti, il risultato della query da db &#232; null poich&#232; non esiste ancora una fattura per l'anno in corso. La conseguenza &#232; che LINQ cerca di mettere null in un int (poich&#232; il campo Number &#232; int) ed il tutto scoppia. La soluzione &#232; semplice, basta castare il campo Number a nullable ed usare GetValueOrDefault per avere il valore di default che desideriamo in caso di null.&lt;br /&gt;&lt;br /&gt;(from c in MyDataContext.Invoice&lt;br /&gt;where c.IssueDate.Year == DateTime.Now.Year&lt;br /&gt;select (int?)c.Number).Max().GetValueOrDefault(1)&lt;br /&gt;&lt;br /&gt;Stay tuned...&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.5/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/LINQ/&quot; rel=&quot;tag&quot;&gt;LINQ&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/sm15455/post2186/LINQ-SQL-Problema-Null.aspx"/><issued>2007-12-16T23:09:00+01:00</issued><modified>2007-12-16T23:09:00+01:00</modified><slash:comments>1</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2186/LINQ-SQL-Problema-Null.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2186.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2186</trackback:ping></entry><entry><title>Future Web Conference e .NET 3.5</title><id>http://blogs.aspitalia.com/sm15455/post2184/Future-Web-Conference-.NET-3.5.aspx</id><created>2007-12-12T17:46:00+01:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2184' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;Il 2008 &#232; un anno che promette bene. Non bastano le promesse per la 2.0 di Silverlight, il lancio di Visual Studio 2008, SqlServer 2008, Windows Server 2008 il summit, la PDC, il MIX. &lt;br /&gt;&lt;br /&gt;Per iniziare nel migliore dei modi e non farci mancare assolutamente nulla, abbiamo organizzato subito un bell'evento che, guarda caso, &#232; rivolto al futuro pi&#249; presente che ci sia. Infatti, il .NET Framework 3.5 e Visual Studio 2008 sono gi&#224; stati rilasciati anche se il lancio ancora non c'&#232; ancora stato. Posso gi&#224; dire, con cognizione di causa, che alcuni clienti lo stanno gi&#224; utilizzando per applicazioni in produzione (in primis il nostro sito).&lt;br /&gt;&lt;br /&gt;Tutto questo per dire che l'evento a L'Aquila verter&#224; sul .NET Framework 3.5 e quindi LINQ, Silverlight, ASP.NET 3.5 con una puntatina ad IIS. Inutile dire che sar&#224; un'occasione per toccare con mano da subito le novit&#224; che ci aspettano, conoscerci di persona, e magari farci anche una bella mangiata tutti insieme (che non guasta mai :D) .&lt;br /&gt;&lt;br /&gt;Personalmente mi occuper&#242; di LINQ ed in modo particolare di LINQ To SQL cercando per quanto possibile di mostrare come LINQ pu&#242; ridurre, drasticamente ed in maniera molto robusta e &lt;span style=&quot;text-decoration: underline;&quot;&gt;patternizzata&lt;/span&gt;, il codice del'90% delle applicazioni che sono attualmente in giro.&lt;br /&gt;&lt;br /&gt;Nei prossimi giorni bloggher&#242; un p&#242; su quello che ci aspetta, giusto per stuzzicare un p&#242; la vostra voglia di partecipare (sia mai che convinco qualcuno a venire)&lt;br /&gt;&lt;br /&gt;Stay Tuned...&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework/&quot; rel=&quot;tag&quot;&gt;.NET Framework&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.5/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET_3.5/&quot; rel=&quot;tag&quot;&gt;ASP.NET 3.5&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/IIS/&quot; rel=&quot;tag&quot;&gt;IIS&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/LINQ/&quot; rel=&quot;tag&quot;&gt;LINQ&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Silverlight/&quot; rel=&quot;tag&quot;&gt;Silverlight&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Silverlight_2.0/&quot; rel=&quot;tag&quot;&gt;Silverlight 2.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Windows_Server/&quot; rel=&quot;tag&quot;&gt;Windows Server&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/XAML/&quot; rel=&quot;tag&quot;&gt;XAML&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Visual_Studio/&quot; rel=&quot;tag&quot;&gt;Visual Studio&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/sm15455/post2184/Future-Web-Conference-.NET-3.5.aspx"/><issued>2007-12-12T17:46:00+01:00</issued><modified>2007-12-12T17:46:00+01:00</modified><slash:comments>0</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2184/Future-Web-Conference-.NET-3.5.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2184.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2184</trackback:ping></entry><entry><title>LINQ To SQL vs NHibernate</title><id>http://blogs.aspitalia.com/sm15455/post2165/LINQ-SQL-NHibernate.aspx</id><created>2007-11-25T16:53:00+01:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2165' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;Durante il mio viaggio nel mondo degli ORM mi sto soffermando molto su LINQ To SQL e NHibernate e come strutturare un 3Tier con questi. NHibernate &#232; tutt'altra bestia e come sappiamo tutti &#232; infinitamente pi&#249; potente rispetto a LINQ To SQL e rende lo sviluppo con Persistence Ignorance assolutamente semplice. Tuttavia, ci sono comunque delle cose che mi fanno preferire LINQ To SQL per molti scenari.&lt;br /&gt;&lt;br /&gt;E-Commerce: un tipo di applicazione come questa necessita di query che vanno per il 95% a consultare il database e per il restante 5% a scrivere. Applicazioni del genere hanno un modello ad oggetti abbastanza semplice e non hanno bisogno di meccanismi di persistenza troppo complessi perch&#232; spesso gli oggetti hanno un mapping 1:1 con le tabelle del db. In questi casi non scomoderei mai NHibernate perch&#232; sarebbe come sparare con un cannone per colpire una zanzara, mentre LINQ To SQL esprime il suo massimo potenziale in questi scenari.&lt;br /&gt;&lt;br /&gt;Community: una community ha forum, blog, articoli, script tutti riconducibili ad un modello a oggetti anche qui estremamente semplice. Ad esempio, un articolo ed un post sul forum o su un blog hanno molto in comune (Autore, data, soggetto, testo, ecc). Anche qui, vale lo stesso discorso per la categoria precedente meglio LINQ To SQL.&lt;br /&gt;&lt;br /&gt;Gestionali: qui il discorso si complica; con questi tipi di applicazione e con l'avvento di ajax capita spesso che si possano creare maschere con tantissimi dati dentro ed un commit finale che deve persistere grafi complessi. In questo caso la scelta tra uno o l'altro dipende da quanto il mapping 1:1 imposto da LINQ To SQL sia accettabile. Io opterei per NHibernate quando la cosa &#232; troppo gravosa mentre in altri casi LINQ To SQL &#232; un'ottima scelta.&lt;br /&gt;&lt;br /&gt;Le considerazioni che ho fatto, ovviamente, tengono conto solo delle problematiche relative al mapping senza tenere in considerazione prestazioni, tipo di database, supporto degli editor, ed altro ancora.&lt;br /&gt;&lt;br /&gt;Detto questo, viva LINQ To SQL viva NHibernate, viva il mapping manuale, viva le applicazioni che funzionano :D.&lt;br /&gt;&lt;br /&gt;Stay tuned...&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.5/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Architettura/&quot; rel=&quot;tag&quot;&gt;Architettura&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/LINQ/&quot; rel=&quot;tag&quot;&gt;LINQ&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/NHibernate/&quot; rel=&quot;tag&quot;&gt;NHibernate&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ORM/&quot; rel=&quot;tag&quot;&gt;ORM&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/sm15455/post2165/LINQ-SQL-NHibernate.aspx"/><issued>2007-11-25T16:53:00+01:00</issued><modified>2007-11-25T16:53:00+01:00</modified><slash:comments>3</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2165/LINQ-SQL-NHibernate.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2165.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2165</trackback:ping></entry><entry><title>NHibernate entra nel mio mondo</title><id>http://blogs.aspitalia.com/sm15455/post2158/NHibernate-Entra-Mondo.aspx</id><created>2007-11-12T23:45:00+01:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2158' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;Non sono mai stato un grande fan di NHibernate e degli ORM in generale. Questo perch&#232; ho l'impressione a pelle di perdere il potere sulla base dati e sul lavoro anche se poi so cche non &#232; cos&#236;. &lt;br /&gt;Ora comincio a convertirmi. E' da idioti non ammettere che NHibernate sia importante per gran parte delle applicazioni odierne. Prima con LINQ To SQL, poi con ADO.NET EF ed ora con NHibernate mi rendo conto che il futuro &#232; quello: ORM per il lavoro spicciolo di persistenza e integrazione custom per le operazioni batch o query speciali o altro ancora. C'&#232; ancora una sacca di applicazioni che non traggono benefici, o ne traggono pochi, da NHibernate quindi bisogna comunque essere in grado di scriversi a mano il DAL delle applicazioni.&lt;br /&gt;Detto questo non ho intenzione di inaugurare una sezione su NHibernate perch&#232; penso che ci sia gi&#224;&#160; parecchio materiale in giro e finirei per dire cose gi&#224; dette e stradette da altri; quello che voglio dire &#232; semplicemente che NHibernate da ieri ha un nuovo utilizzatore.&lt;br /&gt;&lt;br /&gt;Stay Tuned...&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/NHibernate/&quot; rel=&quot;tag&quot;&gt;NHibernate&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ORM/&quot; rel=&quot;tag&quot;&gt;ORM&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/sm15455/post2158/NHibernate-Entra-Mondo.aspx"/><issued>2007-11-12T23:45:00+01:00</issued><modified>2007-11-12T23:45:00+01:00</modified><slash:comments>7</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2158/NHibernate-Entra-Mondo.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2158.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2158</trackback:ping></entry><entry><title>Linq non &amp;#232; solo interazione con il Database</title><id>http://blogs.aspitalia.com/sm15455/post2147/Linq-Interazione-Database.aspx</id><created>2007-10-14T23:54:00+01:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2147' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;Sto usando massivamente LINQ in questo periodo, vuoi per preparare gli script per la &lt;a href=&quot;http://www.winfxitalia.com/script/&quot;&gt;sezione&lt;/a&gt;, vuoi perch&#232; lo trovo estremamente affascinante, vuoi perch&#232; a volte non ho niente di meglio da fare che smanettarci un pochino :). &lt;br /&gt;&lt;br /&gt;E' ovvio che la grande novit&#224; che LINQ introduce &#232; l'interazione tipizzata verso il database, vedi Linq to Sql ed il pi&#249; ampio ADO.NET EF. Per&#242; ridurre LINQ solamente a questi campi sarebbe estremamente riduttivo. Infatti la sua potenza di elaborazione di oggetti in memoria &#232; molto elevata (INQ To Objects). Fare query su liste, di oggetti, fondere n liste, ricercare insiemi, cercare parole all'inteno di frasi, insomma tutte quelle operazioni che fino ad adesso si sono espresse tramite codice si possono esprimere con un linguaggio molto simile ad una query. La vera potenza di Linq secondo me sta li.&lt;br /&gt;&lt;br /&gt;Questo anche perch&#232; trovo LINQ To Sql ancora molto acerbo (anche se super-perfetto per certi scenari), e ADO.NET EF &#232; ancora lontano. Questo &#232; il principale motivo che mi ha spinto ad organizzare la rubrica nel mondo in cui lo &#232; adesso, ovvero una approfondita introduzione alla potenza della sintassi LINQ, senza puntare dritti al database. Io credo che una volta vista la maggior parte della sintassi e analizzato come fare query su oggetti e su file xml fnalmente si smetter&#224; di polemizzare sulle limitazioni di LINQ verso i database e si apprezzer&#224; finalmente la sua eccezionale potenza in tutti gli altri campi (ovver&#242; il restante 90% dell'applicazione).&lt;br /&gt;&lt;br /&gt;Stay Tuned...&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.5/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/LINQ/&quot; rel=&quot;tag&quot;&gt;LINQ&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/sm15455/post2147/Linq-Interazione-Database.aspx"/><issued>2007-10-14T23:54:00+01:00</issued><modified>2007-10-14T23:54:00+01:00</modified><slash:comments>0</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2147/Linq-Interazione-Database.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2147.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2147</trackback:ping></entry><entry><title>Transactional NTFS + Transactional Database con Vista e Windows Server 2008 (parte seconda)</title><id>http://blogs.aspitalia.com/sm15455/post2143/Transactional-NTFS-Transactional-Database-Vista-Windows-Server-2008.aspx</id><created>2007-10-07T23:34:00+01:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2143' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;Nel post &lt;a href=&quot;http://blogs.aspitalia.com/sm15455/post2139/Transactional-NTFS-Vista-Windows-Server-2008.aspx&quot;&gt;precedente&lt;/a&gt; avevo parlato dei test che avevo fatto per fare in modo che la scrittura dei file su disco fosse transazionale. La cosa &#232; bella, no anzi bellissima, no anzi spettacolare, ma ancora pi&#249; sensazionale se associata all'utilizzo di un database. &lt;br /&gt;&lt;br /&gt;Il test &#232; semplice anche perch&#232; per fare tutto ci si deve affidare alla classe TransactionScope e quindi il pi&#249; &#232; fatto.&lt;br /&gt;&lt;br /&gt;Alla fine scrivo l'nformazione su di un file, poi segnalo sul database la buona riuscita dell'operazione ed infine mi scordo di committare. Il risultato &#232; che il mio database non &#232; cambiato di una virgola ne tantomeno il mio filesystem ha dovuto registrare un nuovo file. &lt;br /&gt;&lt;br /&gt;L'ultima cosa che devo fare &#232; uno stress test perch&#232; comunque la cosa va di Interop e quindi le prestazioni comunque ne risentono. Comunque con o senza Interop, una feature del genere vale la pena implementarla ovunque.&lt;br /&gt;&lt;br /&gt;Detto questo, non posto codice perch&#232; un uccellino mi ha detto che &lt;a href=&quot;http://blogs.aspitalia.com/imperugo/&quot;&gt;qualcuno&lt;/a&gt; si sta sporcando le mani pi&#249; di me su questo argomento e quindi aspetto che sia lui a spiegarvi nel dettaglio le grosse novit&#224;.&lt;br /&gt;&lt;br /&gt;Stay Tuned...&lt;br /&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/sm15455/post2143/Transactional-NTFS-Transactional-Database-Vista-Windows-Server-2008.aspx"/><issued>2007-10-07T23:34:00+01:00</issued><modified>2007-10-07T23:34:00+01:00</modified><slash:comments>0</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2143/Transactional-NTFS-Transactional-Database-Vista-Windows-Server-2008.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2143.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2143</trackback:ping></entry><entry><title>Transactional NTFS con Vista e Windows Server 2008</title><id>http://blogs.aspitalia.com/sm15455/post2139/Transactional-NTFS-Vista-Windows-Server-2008.aspx</id><created>2007-10-04T00:45:00+01:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2139' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;a href=&quot;http://blogs.aspitalia.com/daniele&quot;&gt;Daniele&lt;/a&gt; probabilmente leggendo questo post e l'ora a cui lo sto facendo non cambier&#224; idea su di me e continuer&#224; a pensarla allo stesso modo, anzi forse anche peggio se cio &#232; possibile :D.&lt;br /&gt;&lt;br /&gt;Comunque preso dall'euforia (di cosa non posso dirlo pubblicamente altrimenti rischio pi&#249; di quello che chiunque di voi possa mai immaginare) ho pensato bene di darmi alla sperimentazione del TfX cio&#232; File System transazionale. Roba dell'altro mondo su Windows fino all'avvento di Vista e WS2008. Partendo da un articolo apparso qualche mese fa su Msdn Magazine, mi sono divertito a preparare un paio di esempi per vedere come sfruttare questa tecnica al volo. Grazie ad un wrapper allegato con l'articolo ed un p&#242; di esperienza maturata su un progetto che fa pesante uso di file, ho avuto la pazienza di creare un'applicazione che:&lt;br /&gt;&lt;br /&gt;Scrive su un file &lt;br /&gt;Crea pi&#249; file &lt;br /&gt;Scrive su pi&#249; file &lt;br /&gt;il tutto sempre in maniera transazionale.&lt;br /&gt;&lt;br /&gt;Per chi lavora con i file e tramite questi deve fare elaborazioni, spesso si &#232; trovato di fronte all'esigenza di rinominare temporaneamente o spostare dei file solo per simulare una transazione. Questo non &#232; pi&#249; necessario grazie a alle nuove feature di NTFS e questo direi che mi piace molto pi&#249; di molto :).&lt;br /&gt;&lt;br /&gt;Lo svantaggio attuale &#232; che non ci sono classi native, ma ci si deve affidare all'interop; io direi che se questo &#232; il solo prezzo che dobbiamo pagare per avere file transazionali... ben venga.&lt;br /&gt;&lt;br /&gt;Non ho fatto prove di interazione con il database per transazionalizzare il tutto (dite la verit&#224; &#232; anche il sogno di alcuni di voi) ma credo che a breve lo far&#242; e vi dir&#242; come &#232; andata.&lt;br /&gt;&lt;br /&gt;Stay Tuned...&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/Windows_Client/&quot; rel=&quot;tag&quot;&gt;Windows Client&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Windows_Server/&quot; rel=&quot;tag&quot;&gt;Windows Server&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Windows_Vista/&quot; rel=&quot;tag&quot;&gt;Windows Vista&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2008 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/sm15455/post2139/Transactional-NTFS-Vista-Windows-Server-2008.aspx"/><issued>2007-10-04T00:45:00+01:00</issued><modified>2007-10-04T00:45:00+01:00</modified><slash:comments>2</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2139/Transactional-NTFS-Vista-Windows-Server-2008.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2139.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2139</trackback:ping></entry></feed>