<?xml version="1.0" encoding="iso-8859-15"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 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/"><channel><title>blogs.ASPItalia.com</title><link>http://blogs.aspitalia.com//sm15455//</link><description>blogs.ASPItalia.com</description><language>it-it</language><copyright>1998-2012 ASPItalia.com/blogs.ASPItalia.com</copyright><generator>Generated by feed.ASPItalia.com 'Cortana' 2012.1.31</generator><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><sy:updateBase>1998-01-01T12:00+00:00</sy:updateBase><lastBuildDate>Mon, 14 Jul 2008 22:34:00 GMT</lastBuildDate><image><title>blogs.ASPItalia.com</title><url>http://gui.aspitalia.com/images/aspitalia/syndication.gif</url><link>http://blogs.aspitalia.com//sm15455//</link></image><item><title>Entity Framework ed il mapping</title><link>http://blogs.aspitalia.com/sm15455/post2326/Entity-Framework-Mapping.aspx</link><pubDate>Mon, 14 Jul 2008 22:34:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2326" border="0" style="width:1px; height:1px;" /&gt;Ormai utilizzo Entity Framework da quasi un anno, e presso un cliente lo sto facendo adottare perchè questo vuole utilizzare solo tecnlogia proprietaria Microsoft. LINQ To SQL non è abbastanza potente quindi la scelta è ovvia.&lt;br /&gt;Quando mi ritrovo a spiegare Entity Framework l'argomento più complicato non è l'Object Tracking o il supporto per scenari su più layer, logici o fisici che siano, o l'EntitySql; l'argomento più complesso è il Mapping. Senza dubbio il mapping in un ORM è il concetto più semplice da capire, ma con Entity Framework nonostante il facile compito si è riusciti a colpire la classica mosca col bazzuca, ma tant'è e così 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 è pura follia, ma ormai non riesco a farne a meno, il designer proprio non lo so usare :)&lt;br /&gt;Alla lunga però paga perchè scrivere il mapping a mano e verificare gli errori fa capire quali sono le necessità di Entity Framework e fa più o meno intuire come lavora il motore. &lt;br /&gt;Ai Community Days, stavo impazzendo con Roberto perchè lui non riusciva a riprodurre l'ereditarietà 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ù 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à ampiamente ripagato dopo poco tempo. Personalmente adoro questa piccola &lt;a href="code.msdn.microsoft.com/EFMappingHelper "&gt;applicazione&lt;/a&gt; che è 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="http://tags.aspitalia.com/Entity_Framework/" rel="tag"&gt;Entity Framework&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ORM/" rel="tag"&gt;ORM&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_3.5/" rel="tag"&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/LINQ/" rel="tag"&gt;LINQ&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/LINQ_to_SQL/" rel="tag"&gt;LINQ to SQL&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/sm15455/post2326/Entity-Framework-Mapping.aspx"&gt;&lt;em&gt;Entity Framework ed il mapping&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>LINQ, Entity Framework, ORM, .NET Framework 3.5, LINQ to SQL</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2326/Entity-Framework-Mapping.aspx</guid><slash:comments>2</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2326/Entity-Framework-Mapping.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2326.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2326</trackback:ping></item><item><title>Il nuovo speciale in arrivo su LINQ</title><link>http://blogs.aspitalia.com/sm15455/post2261/Speciale-Arrivo-LINQ.aspx</link><pubDate>Fri, 28 Mar 2008 10:37:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2261" border="0" style="width:1px; height:1px;" /&gt;Se è vero che alla follia non c'è mai fine allora non so veramente dove andremo a finire. Non bastavano 2 &lt;a href="http://www.linqitalia.com/"&gt;siti&lt;/a&gt; &lt;a href="http://www.silverlightitalia.com/"&gt;nuovi&lt;/a&gt; di zecca dedicati alle più grandi novità di casa Microsoft degli ultimi anni? Non bastava uno &lt;a href="http://www.aspitalia.com/focuson/1022/Speciale-Lancio-Visual-Studio-2008-SQL-Server-2008.aspx"&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="http://www.linqitalia.com/articoli/"&gt;articoli&lt;/a&gt;, &lt;a href="http://www.linqitalia.com/script/"&gt;script&lt;/a&gt;, &lt;a href="http://www.aspitalia.com/focuson/"&gt;focuson&lt;/a&gt;, &lt;a href="http://blogs.aspitalia.com/"&gt;blog&lt;/a&gt;?&lt;br /&gt;Beh, la risposta è: 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 è ormai nostra usanza, affronteremo questa nuova sfida con uno &lt;a href="http://www.aspitalia.com/focuson/1030/Screencast-Dedicati-LINQ-Speciale-Aprile.aspx"&gt;speciale&lt;/a&gt;. La sezione &lt;a href="http://media.aspitalia.com/"&gt;media&lt;/a&gt; esiste già 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è il primo sito del network ad affrontare questa nuova avventura è 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="http://blogs.aspitalia.com/novecento/"&gt;Alessio&lt;/a&gt; ha affrontato la parte Player (In Siverlight) mentre &lt;a href="http://blogs.aspitalia.com/daniele/"&gt;Daniele&lt;/a&gt; ha come sempre coordinato le attività.&lt;br /&gt;&lt;br /&gt;Insomma, ad Aprile niente dolce dormire, ma tanti nuovi contenuti per la community :). E poi chissà, 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="http://tags.aspitalia.com/.NET_Framework_3.5/" rel="tag"&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/LINQ/" rel="tag"&gt;LINQ&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/LINQ_to_SQL/" rel="tag"&gt;LINQ to SQL&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/LINQ_to_XML/" rel="tag"&gt;LINQ to XML&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/XML/" rel="tag"&gt;XML&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/sm15455/post2261/Speciale-Arrivo-LINQ.aspx"&gt;&lt;em&gt;Il nuovo speciale in arrivo su LINQ&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>LINQ, .NET Framework 3.5, LINQ to SQL, LINQ to XML, XML</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2261/Speciale-Arrivo-LINQ.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2261/Speciale-Arrivo-LINQ.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2261.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2261</trackback:ping></item><item><title>LINQ To SQL ed il Fetching</title><link>http://blogs.aspitalia.com/sm15455/post2193/LINQ-SQL-Fetching.aspx</link><pubDate>Thu, 27 Dec 2007 09:23:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2193" border="0" style="width:1px; height:1px;" /&gt;Partiamo da un concetto: LINQ To SQL è fantastico. E' un ORM For Dummies nel senso che ha una facilità 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è 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à sono pugnalate al cuore. La principale è: &lt;span style="font-weight: bold;"&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ù le associazioni dal db, se in eager o in lazy loading. Per default, le entità associate venivano caricate in lazy con la possibilità di cambiare, tramite LoadOptions, in eager. Questa possibilità, in realtà, rappresentava un problema per il team di sviluppo che doveva gestire una serie di casistiche di caricamento eccessive, quindi è stata tagliata la testa al toro e si è 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ù 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 è impostare a priori le politiche di fetching cioè 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è il fetching è stato impostato già una volta nel metodo che ritrova la fattura.&lt;br /&gt;&lt;br /&gt;Come detto, l'unica via è impostare in fase di creazione del DataContext tutte le politiche di fetching che questo dovrà 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, è 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ò 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à 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="http://tags.aspitalia.com/.NET_Framework_3.5/" rel="tag"&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/LINQ/" rel="tag"&gt;LINQ&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ORM/" rel="tag"&gt;ORM&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/sm15455/post2193/LINQ-SQL-Fetching.aspx"&gt;&lt;em&gt;LINQ To SQL ed il Fetching&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>LINQ, .NET Framework 3.5, ORM</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2193/LINQ-SQL-Fetching.aspx</guid><slash:comments>1</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2193/LINQ-SQL-Fetching.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2193.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2193</trackback:ping></item><item><title>LINQ To SQL ed un problema di null</title><link>http://blogs.aspitalia.com/sm15455/post2186/LINQ-SQL-Problema-Null.aspx</link><pubDate>Sun, 16 Dec 2007 22:09:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2186" border="0" style="width:1px; height:1px;" /&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 è 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 è null poichè non esiste ancora una fattura per l'anno in corso. La conseguenza è che LINQ cerca di mettere null in un int (poichè il campo Number è int) ed il tutto scoppia. La soluzione è 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="http://tags.aspitalia.com/.NET_Framework_3.5/" rel="tag"&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/LINQ/" rel="tag"&gt;LINQ&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/sm15455/post2186/LINQ-SQL-Problema-Null.aspx"&gt;&lt;em&gt;LINQ To SQL ed un problema di null&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>LINQ, .NET Framework 3.5</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2186/LINQ-SQL-Problema-Null.aspx</guid><slash:comments>2</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2186/LINQ-SQL-Problema-Null.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2186.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2186</trackback:ping></item><item><title>LINQ To SQL vs NHibernate</title><link>http://blogs.aspitalia.com/sm15455/post2165/LINQ-SQL-NHibernate.aspx</link><pubDate>Sun, 25 Nov 2007 15:53:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2165" border="0" style="width:1px; height:1px;" /&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 è tutt'altra bestia e come sappiamo tutti è infinitamente più 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è spesso gli oggetti hanno un mapping 1:1 con le tabelle del db. In questi casi non scomoderei mai NHibernate perchè 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 è troppo gravosa mentre in altri casi LINQ To SQL è 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="http://tags.aspitalia.com/.NET_Framework_3.5/" rel="tag"&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Architettura/" rel="tag"&gt;Architettura&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/LINQ/" rel="tag"&gt;LINQ&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/NHibernate/" rel="tag"&gt;NHibernate&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ORM/" rel="tag"&gt;ORM&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/sm15455/post2165/LINQ-SQL-NHibernate.aspx"&gt;&lt;em&gt;LINQ To SQL vs NHibernate&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>LINQ, .NET Framework 3.5, Architettura, NHibernate, ORM</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2165/LINQ-SQL-NHibernate.aspx</guid><slash:comments>3</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2165/LINQ-SQL-NHibernate.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2165.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2165</trackback:ping></item><item><title>Linq non &amp;#232; solo interazione con il Database</title><link>http://blogs.aspitalia.com/sm15455/post2147/Linq-Interazione-Database.aspx</link><pubDate>Sun, 14 Oct 2007 21:54:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2147" border="0" style="width:1px; height:1px;" /&gt;Sto usando massivamente LINQ in questo periodo, vuoi per preparare gli script per la &lt;a href="http://www.winfxitalia.com/script/"&gt;sezione&lt;/a&gt;, vuoi perchè lo trovo estremamente affascinante, vuoi perchè 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à che LINQ introduce è l'interazione tipizzata verso il database, vedi Linq to Sql ed il più ampio ADO.NET EF. Però ridurre LINQ solamente a questi campi sarebbe estremamente riduttivo. Infatti la sua potenza di elaborazione di oggetti in memoria è 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è trovo LINQ To Sql ancora molto acerbo (anche se super-perfetto per certi scenari), e ADO.NET EF è ancora lontano. Questo è il principale motivo che mi ha spinto ad organizzare la rubrica nel mondo in cui lo è 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à di polemizzare sulle limitazioni di LINQ verso i database e si apprezzerà finalmente la sua eccezionale potenza in tutti gli altri campi (ovverò 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="http://tags.aspitalia.com/.NET_Framework_3.5/" rel="tag"&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/LINQ/" rel="tag"&gt;LINQ&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/sm15455/post2147/Linq-Interazione-Database.aspx"&gt;&lt;em&gt;Linq non &amp;#232; solo interazione con il Database&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>LINQ, .NET Framework 3.5</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2147/Linq-Interazione-Database.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2147/Linq-Interazione-Database.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2147.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2147</trackback:ping></item><item><title>ADO.NET Entity Framework e le colonne calcolate</title><link>http://blogs.aspitalia.com/sm15455/post2115/ADO.NET-Entity-Framework-Colonne-Calcolate.aspx</link><pubDate>Mon, 03 Sep 2007 20:03:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2115" border="0" style="width:1px; height:1px;" /&gt;Lo studio su Linq prosegue a gonfie vele, complice anche un treno da Roma a Milano che ha 90 minuti di ritardo.&lt;br /&gt;&lt;br /&gt;Dopo aver studiato un pò le modalità per fare le query, Lazy Loading, eager loading, ed altre cosine, sono passato agli aggiornamenti e qui mi sono scontrato con un problemino. Ho provato ad aggiungere un nuovo oggetto ad una tabella che aveva un campo calcolato e sqlserver mi restituiva una bella eccezione. Ovviamente, il problema risiedeva nel mapping che non considerava il fatto che il campo fosse calcolato. Il file l'ho generato tramite i tool appena usciti con la prima ctp quindi direi che ho scovato un bel bug :). &lt;br /&gt;&lt;br /&gt;Per la cronaca, il problema si risolve recuperando la parte di definizione dello Storage Schema (SSDL) ed impostando sulla colonna in questione l'attributo StoreGeneratedPattern=&amp;quot;computed&amp;quot;. In questo modo l'sql generato dalla insert non prende in considerazione il campo calcolato e sqlserver è felice e contento ( e anche io :) ).&lt;br /&gt;&lt;br /&gt;Stay Tuned...
&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/ADO.NET/" rel="tag"&gt;ADO.NET&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/LINQ/" rel="tag"&gt;LINQ&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_3.5/" rel="tag"&gt;.NET Framework 3.5&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/sm15455/post2115/ADO.NET-Entity-Framework-Colonne-Calcolate.aspx"&gt;&lt;em&gt;ADO.NET Entity Framework e le colonne calcolate&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>LINQ, ADO.NET, .NET Framework 3.5</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2115/ADO.NET-Entity-Framework-Colonne-Calcolate.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2115/ADO.NET-Entity-Framework-Colonne-Calcolate.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2115.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2115</trackback:ping></item><item><title>Linq To Entities ed il Lazy Loading</title><link>http://blogs.aspitalia.com/sm15455/post2114/Linq-Entities-Lazy-Loading.aspx</link><pubDate>Sun, 02 Sep 2007 22:02:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2114" border="0" style="width:1px; height:1px;" /&gt;Fondamentalmente, ADO.NET Entity Framework mi piace e parecchio pure. A parte gli errori di impostazione che secondo me sono nella maggior parte dei casi ignorabili (mancanza di Persistence Ignorance su tutti), direi che nel complesso le basi per affacciarsi al mondo ORM con una prima versione decente ci sono. &lt;br /&gt;&lt;br /&gt;Tuttavia ogni tanto vedo cose che trovo strane. Per default, quando si carica un'entità, tutte le entità associate non vengono caricate subito, ma solo quando vi si accede. Quindi, quando si carica un'entita Customer, non si caricano anche i suoi ordini. Quando si vuole accedere ai suoi ordini si interroga la proprietà Orders; insomma qualcosa come cust.Orders.&lt;br /&gt;&lt;br /&gt;Ebbene, a meno che non mi sia perso qualcosa, il procedimento non è solamente questo. Infatti, l'entita va caricata esplicitamente chiamando il metodo Load; quindi, prima si chiama cust.Orders.Load(), e poi si possono scorrere i dati. Ora, la cosa non mi piace proprio; se accedo alla proprietà vuol dire che la voglio caricare, quindi perchè doverlo fare esplicitamente?&lt;br /&gt;&lt;br /&gt;Spero tanto di essermi perso qualcosa, intanto continuo a cercare, ma se non troverò nulla che mi smentirà, rimmarrò un tantinello basito.&lt;br /&gt;&lt;br /&gt;Stay tuned...&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/ADO.NET/" rel="tag"&gt;ADO.NET&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/LINQ/" rel="tag"&gt;LINQ&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/LINQ_to_Entities/" rel="tag"&gt;LINQ to Entities&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_3.5/" rel="tag"&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Entity_Framework/" rel="tag"&gt;Entity Framework&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ORM/" rel="tag"&gt;ORM&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/sm15455/post2114/Linq-Entities-Lazy-Loading.aspx"&gt;&lt;em&gt;Linq To Entities ed il Lazy Loading&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>LINQ, ADO.NET, LINQ to Entities, .NET Framework 3.5, Entity Framework, ORM</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2114/Linq-Entities-Lazy-Loading.aspx</guid><slash:comments>3</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2114/Linq-Entities-Lazy-Loading.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2114.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2114</trackback:ping></item><item><title>Linq e l&amp;#39;esecuzione delle query</title><link>http://blogs.aspitalia.com/sm15455/post2109/Linq-Esecuzione-Query.aspx</link><pubDate>Sun, 26 Aug 2007 09:52:00 GMT</pubDate><description>&lt;img src="http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2109" border="0" style="width:1px; height:1px;" /&gt;Ormai anche i sassi sanno che Visual Studio 2008 è alle porte. A fine febbraio uscirà la RTM. Questo significa che se fino ad adesso si è giocato o si è provato a capire solo la base di come funzionano le cose con LINQ, è arrivato il momento di fare sul serio.&lt;br /&gt;&lt;br /&gt;Stamattina complice il jetleg di 5 ore mi sono svegliato presto e ovviamente tra il dover pulire casa, uscire fuori con 30 gradi, subirmi le sempre più pallose trasmissioni di Formula 1 ho scelto un pò di studio di LINQ (eh lo so son malato che ci posso fare :).&lt;br /&gt;&lt;br /&gt;Una cosa che mi son chiesto è: quando LINQ esegue la query? Non che la cosa sia particolarmente importante, ma sapere come funziona fa sempre bene. Armato di VS2008 e del fido profiler mi sono messo all'opera ed ho tirato giù questo codice:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;dbcontext db = new dbcontext();&lt;br /&gt;var q = From t in db.table where t.field &amp;gt; 10 select t;&lt;br /&gt;mylistview.DataSource = q;&lt;br /&gt;mylistview.DataBind();&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Queste 4 righe di codice comportano l'esecuzione della query solo nel momento in cui viene fatto il databind alla listview. In questo caso banale, la cosa non è importante, ma se si incrementano delle variabili nella query e si pretende che queste siano incrementate prima di fare il databind, allora questa modalità rappresenta un problema. Per ovviare al problema, basta circondare la query tra parentesi ed invocare un semplice ToList() per far eseguire subito la query.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;var q = (From t in db.table where t.field &amp;gt; 10 select t).ToList();&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;P.S. Il fatto che LINQ mi interessi tanto non è dovuto solo alla sua potenza e alla RTM incombente... A buon intenditor poche parole ;).&lt;br /&gt;&lt;br /&gt;Stay Tuned...&lt;br /&gt;
 &lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/.NET_Framework_3.5/" rel="tag"&gt;.NET Framework 3.5&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/LINQ/" rel="tag"&gt;LINQ&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Continua a leggere &lt;a href="http://blogs.aspitalia.com/sm15455/post2109/Linq-Esecuzione-Query.aspx"&gt;&lt;em&gt;Linq e l&amp;#39;esecuzione delle query&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2012 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>LINQ, .NET Framework 3.5</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2109/Linq-Esecuzione-Query.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2109/Linq-Esecuzione-Query.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2109.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2109</trackback:ping></item></channel></rss>
