<?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.818</generator><author><name>SMWorld.NET - Il blog di Stefano Mostarda</name><url>http://blogs.aspitalia.com/SM15455/</url></author><modified>2008-08-20T10:09:02+00:00</modified><entry><title>ASP.NET 3.5 per tutti &amp;#232; un nuovo libro</title><id>http://blogs.aspitalia.com/sm15455/post2353/ASP.NET-3.5-Libro.aspx</id><created>2008-08-04T13:51:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2353' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;Come gi&#224; &lt;a href=&quot;http://blogs.aspitalia.com/daniele/&quot;&gt;Daniele&lt;/a&gt; e &lt;a href=&quot;http://blogs.aspitalia.com/rickyvr/&quot;&gt;Ricky&lt;/a&gt; &lt;a href=&quot;http://blogs.aspitalia.com/daniele/post2303/Imminente-Libro-Prenotazione-ASP.NET-3.5.aspx&quot;&gt;hanno&lt;/a&gt; &lt;a href=&quot;http://blogs.aspitalia.com/rickyvr/post2305/Arriva-ASP.NET-3.5-Tutti.aspx&quot;&gt;detto&lt;/a&gt;, il nostro nuovo &lt;a href=&quot;http://books.aspitalia.com/ASP.NET-3.5/&quot;&gt;libro&lt;/a&gt; &#232; gi&#224; in fase avanzata. Quello che tutti e due hanno detto &#232; che questa non sar&#224; una riedizione riveduta, corretta e ampliata per venire incontro alle novit&#224; di ASP.NET 3.5.&lt;br /&gt;Oltre che a ribadire il concetto voglio anche portare altre prove: l'accesso ai dati ora consiste di 4 capitoli solo per dire come si pu&#242; accedere, per come trattarli e visualizzarli ce ne sono altri 4. Quando si parla di LINQ To SQL, non si parla in termini di wizard e drag&amp;amp;drop delle tabelle, bens&#236; si parla di come creare le classi a mano, di come si mappano verso il db, di come si gestisce la concorrenza, di come si invocano le stored procedure, insomma si affronta LINQ To SQL da un punto di vista dell'utilizzo reale e non da quello puramente demo dell'editor visuale. Dopo l'esperienza in &lt;a href=&quot;http://community.mtv.it&quot;&gt;MTV&lt;/a&gt;, posso garantire che chi continua ad usare LINQ To SQL a colpi di editor e Drag&amp;amp;Drop prima o poi la pagher&#224; cara.&lt;br /&gt;Nel capitolo della localizzazione ci saranno 3 pagine nuove dedicate alla costruzione di un provider custom per le risorse che attinge dal database. Nel capitolo sul deploy ci saranno distinzioni per ASP.NET 1.x, 2.0 e 3.5.&lt;br /&gt;E poi signori&lt;br /&gt;Insomma, abbiamo dato ascolto a tutte le cose buone come a tutte le critiche che ci sono arrivate ed alla fine abbiamo partorito un libro che nel panorama &#232; l'unico ad affrontare linguaggi, svilluppo, sicurezza, e deploy a partire dalla 1.0 per finire alla 3.5.&lt;br /&gt;&lt;br /&gt;E poi volete perdervi il gusto di leggere in prima assoluta un capitolo intero su ASP.NET MVC? ;)&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/ASP.NET_3.5_per_tutti/&quot; rel=&quot;tag&quot;&gt;ASP.NET 3.5 per tutti&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/post2353/ASP.NET-3.5-Libro.aspx"/><issued>2008-08-04T15:51:00+00:00</issued><modified>2008-08-04T15:51:00+00:00</modified><slash:comments>5</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2353/ASP.NET-3.5-Libro.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2353.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2353</trackback:ping></entry><entry><title>ASP.NET Ajax Roadmap</title><id>http://blogs.aspitalia.com/sm15455/post2339/ASP.NET-Ajax-Roadmap.aspx</id><created>2008-07-21T12:52:00+00:00</created><content type="text/html" mode="escaped">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2339' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;Ad inizio mese, Microsoft ha rilasciato un documento sulla roadmap che intende seguire per migliorare il proprio framework per AJAX. La versione 1.0 &#232; ormai abbastanza stabile grazie alle correzioni fatte con la versione integrata nel framework 3.5 e quindi &#232; ora di guardare avanti.&lt;br /&gt;Chi ha seguito ASP.NET Ajax sin dai tempi in cui si chiamava Atlas sa bene che quello che &#232; stato partorito da MS &#232; un topolino di fronte alla quantit&#224; enorme di feature comprese nelle prime CTP. Questo &#232; andato a vantaggio di una maggior stabilit&#224; ma a discapito di una serie di funzionalit&#224; assolutamente necessarie per sviluppare una vera applicazione AJAX. Infatti, la parte client del framework &#232; estremamente scarna in quanto contiene fondamentalmente solo uno strato di astrazione per rendere le API Cross-Browser e qualche funzione.&lt;br /&gt;Adesso le cose cambiano. L'intenzione &#232; quella di reintrodurre il meccanismo di templating e di databinding one-way e two-way in maniera per&#242; completamente diversa rispetto a quanto fatto vedere nelle prime CTP dove il tutto era troppo complicato e lento. Inoltre hanno l'intenzione di creare un motore di interrogazione per il DOM molto simile a JQuery.&lt;br /&gt;Insomma, le premesse sono pi&#249; che buone perch&#232; quello che vogliono fare &#232; rendere ASP.NET Ajax un framework serio e se mantengon oquello che dicono, credo che dovr&#242; rivedere un p&#242; le mie idee e soprattutto il modo in cui ho scritto alcune applicazioni. :)&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/AJAX/&quot; rel=&quot;tag&quot;&gt;AJAX&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET_2.0/&quot; rel=&quot;tag&quot;&gt;ASP.NET 2.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET_AJAX/&quot; rel=&quot;tag&quot;&gt;ASP.NET AJAX&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/post2339/ASP.NET-Ajax-Roadmap.aspx"/><issued>2008-07-21T14:52:00+00:00</issued><modified>2008-07-21T14:52:00+00:00</modified><slash:comments>0</slash:comments><wfw:comments>http://blogs.aspitalia.com/sm15455/post2339/ASP.NET-Ajax-Roadmap.aspx#feedback</wfw:comments><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2339.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2339</trackback:ping></entry><entry><title>Entity Framework ed il mapping</title><id>http://blogs.aspitalia.com/sm15455/post2326/Entity-Framework-Mapping.aspx</id><created>2008-07-14T22:34:00+00: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+00:00</issued><modified>2008-07-15T00:34:00+00: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-11T12:17:00+00: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+00:00</issued><modified>2008-07-11T14:17:00+00: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-06T17:30:00+00: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+00:00</issued><modified>2008-07-06T19:30:00+00: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-31T19:47:00+00: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+00:00</issued><modified>2008-05-31T21:47:00+00: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-28T10:37:00+00: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+00:00</issued><modified>2008-03-28T11:37:00+00: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-30T23:21:00+00: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+00:00</issued><modified>2008-01-31T00:21:00+00: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-16T09:27:00+00: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/ASPItalia.com/&quot; rel=&quot;tag&quot;&gt;ASPItalia.com&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+00:00</issued><modified>2008-01-16T10:27:00+00: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-27T09:23:00+00: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+00:00</issued><modified>2007-12-27T10:23:00+00: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-16T22:09:00+00: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+00:00</issued><modified>2007-12-16T23:09:00+00: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-12T16:46:00+00: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+00:00</issued><modified>2007-12-12T17:46:00+00: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-25T15:53:00+00: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+00:00</issued><modified>2007-11-25T16:53:00+00: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-12T22:45:00+00: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+00:00</issued><modified>2007-11-12T23:45:00+00: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-14T21:54:00+00: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+00:00</issued><modified>2007-10-14T23:54:00+00: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></feed>