<?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-2009 ASPItalia.com/blogs.ASPItalia.com</copyright><generator>Generated by feed.ASPItalia.com 'Caesar Reborn' 2009.6.29</generator><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><sy:updateBase>1998-01-01T12:00+00:00</sy:updateBase><lastBuildDate>Tue, 09 Jun 2009 05:00: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 e le performance con la Like</title><link>http://blogs.aspitalia.com/sm15455/post2514/Entity-Framework-Performance-Like.aspx</link><pubDate>Tue, 09 Jun 2009 05:00:00 GMT</pubDate><description>&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2514' border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Nel bel mezzo della notte insonne ho deciso di fare qualche test per verificare quanto il problema mostrato in questo &lt;a href="http://www.linqitalia.com/script/124/ottimizzare-where-operatore-like-entity-framework.aspx"&gt;script&lt;/a&gt; fosse rilevante. &lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;Ho creato una tabella con un solo campo di tipo varchar(50) e l'ho popolata con 500.000 righe. poi ho creato una console application ed ho eseguito la stessa query per 100 volte utizzando prima la sintassi LINQ To Entities e poi quella Entity SQL. &lt;/p&gt; &lt;p&gt;Il risultato è abbastanza impietoso perchè la sintassi LINQ To Entities impiega 1'02''815 mentre quella Entity SQL impiega 1''221. La differenza di 1 minuto su 100 query è enorme. questo fatto è da considerare quando si vogliono fare applicazioni scalabili con Entity Framework.. tenetelo a mente&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;Stay Tuned...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/ADO.NET_Entity_Framework/" rel="tag"&gt;ADO.NET Entity Framework&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/LINQ/" rel="tag"&gt;LINQ&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>Entity Framework In Action, ADO.NET Entity Framework, LINQ</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2514/Entity-Framework-Performance-Like.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2514/Entity-Framework-Performance-Like.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2514.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2514</trackback:ping></item><item><title>Entity Framework e la generazione di codice POCO</title><link>http://blogs.aspitalia.com/sm15455/post2512/Entity-Framework-Generazione-Codice.aspx</link><pubDate>Tue, 02 Jun 2009 18:22:55 GMT</pubDate><description>&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2512' border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Una delle cose più &lt;strong&gt;S&lt;/strong&gt;gradite di Entity Framework 4.0 è il fatto che il designer non genera classi POCO. Questa scelta è ovvia e rimarrà quella di default anche in RTM per mantenere la compatibilità col passato. La buona notizia è che per la RTM il team dovrebbe anche includere un template T4 per la generazione di classi POCO.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;La certezza assoluta è che questo template genererà le classi aggiungendole allo stesso assembly in cui si trova l'EDMX. Ora che finalmente abbiamo un sistema &lt;strong&gt;OTTIMO-FANTASTICO-ECCEZIONALE-MERAVIGLIOSO-PERFETTO&lt;/strong&gt; di generazione del codice, questa limitazione si può superare. Cercando un pò in rete e partendo dalla base del template esistente, sono arrivato a creare un template che permette di:&lt;/p&gt; &lt;p&gt;Generare le classi e l'objectcontext in classi separate.&lt;/p&gt; &lt;p&gt;Aggiungere le classi ad un assembly diverso da quello in cui si trova l'edmx. Nell'assembly dell'ObjectModel o del DomainModel ad esempio. (Facoltativo).&lt;/p&gt; &lt;p&gt;Aggiungere l'objectcontext ad un assembly diverso da quello in cui si trova l'edmx. Nell'assembly del DAL ad esempio. (Facoltativo).&lt;/p&gt; &lt;p&gt;Mantenete il proprio codice aggiunto alle entities anche quando l'entità viene rigenerata.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;Ovviamente il tutto è molto Beta 1 ma credo sia un ottimo punto di partenza per capire come funziona il T4 e per avere classi POCO da subito. In altri post vedremo come ho risolto alcuni problemi. nel frattempo potete scaricare il template a questo &lt;a href="http://lab.aspitalia.com/60/template-generare-classi-entity-framework-4.0.aspx" target="_blank"&gt;indirizzo&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/.NET_Framework/" rel="tag"&gt;.NET Framework&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_4.0/" rel="tag"&gt;.NET Framework 4.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ADO.NET_Entity_Framework/" rel="tag"&gt;ADO.NET Entity Framework&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ORM/" rel="tag"&gt;ORM&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>Entity Framework In Action, .NET Framework, .NET Framework 4.0, ADO.NET Entity Framework, ORM</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2512/Entity-Framework-Generazione-Codice.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2512/Entity-Framework-Generazione-Codice.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2512.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2512</trackback:ping></item><item><title>.NET Framework 4.0 Beta 1: Entity Framework</title><link>http://blogs.aspitalia.com/sm15455/post2499/.NET-Framework-4.0-Beta-1-Entity-Framework.aspx</link><pubDate>Mon, 18 May 2009 14:14:28 GMT</pubDate><description>&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2499' border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;In questi minuti è uscita la beta 1 del .NET Framework 4.0. Ovviamente, per quanto mi riguarda, la cosa più interessante è Entity Framework 4.0. Le novità della nuova versione sono state annunciate già da tempo nel blog dedicato e quindi non ci sono cose nuove da scoprire.&lt;/p&gt;  &lt;p&gt;Nonostante questo, credo che sia il caso di fare una carrellata in rigoroso ordine di preferenza personale :)&lt;/p&gt;  &lt;ul&gt; &lt;li&gt;Supporto per mappare le stored procedure su tipi custom: fino ad ora le stored procedure potevano essere mappate solo verso entità o su tipi custom che però avessereo un mapping verso una tabella o view nel database. adesso finalente questo on sarà necessario. Basterà creare un ComplexType e mapparci la SP.&lt;/li&gt; &lt;li&gt;Designer decente. Finalmente il designer può defnirsi decente. innanzitutto c'è il supporto per i complex types ma soprattutto non ci sono crash ogni volta che si fa qualcosa di un pelino più complesso.&lt;/li&gt; &lt;li&gt;Customizzazione del codice generato tramite T4. Finalmente possiamo customizzarce il codice che genera il designer tramite un template. ovviamente possiamo anche suddividere le clasi su più file e molto altro ancora.&lt;/li&gt; &lt;li&gt;Persistence Ignorance. Gran bella novità per carità.... Ma non sempre mi è servità come le altre precedenti&lt;/li&gt; &lt;li&gt;Miglior supporto per lo sviluppo n-tier con API che semplificano la vita.&lt;/li&gt; &lt;li&gt;Foreign-key per semplificare la vita quando si inseriscono sul db entità in relazione tra loro (solo dopo la beta 1)&lt;/li&gt; &lt;li&gt;Possibilità di generare il database partendo dalle classi (Model first).&lt;/li&gt; &lt;li&gt;Lazy loading&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Ci sono altre piccole feature che scopriremo col tempo, ma direi che ormai è il momento di provarle sul campo :D.&lt;/p&gt; &lt;p&gt;Maggiori informazioni e le informazioni per il download sono disponibili nel nostro mini-sito dedicato al &lt;a href="http://netfx4.winfxitalia.com/"&gt;.NET Framework 4.0&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Stay Tuned...&lt;/p&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/.NET_Framework_4.0/" rel="tag"&gt;.NET Framework 4.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ADO.NET_Entity_Framework/" rel="tag"&gt;ADO.NET Entity Framework&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;a href="http://tags.aspitalia.com/.NET_Framework/" rel="tag"&gt;.NET Framework&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>Entity Framework In Action, .NET Framework 3.5, .NET Framework 4.0, ADO.NET Entity Framework, LINQ, ORM, .NET Framework</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2499/.NET-Framework-4.0-Beta-1-Entity-Framework.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2499/.NET-Framework-4.0-Beta-1-Entity-Framework.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2499.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2499</trackback:ping></item><item><title>Windows Comunication Foundation al Basta! On Tour di Milano</title><link>http://blogs.aspitalia.com/sm15455/post2493/Windows-Comunication-Foundation-Basta-ON-Tour-Milano.aspx</link><pubDate>Thu, 07 May 2009 09:08:23 GMT</pubDate><description>&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2493' border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Come già ampiamente annunciato, Giovedì 28 e Venerdì 29 Maggio a Milano ci&amp;#160; sarà il Basta! On Tour. A Differena dell'edizione di Marzo a Roma, questa volta non si terranno sessioni singole ma sarà una due giorni dedicata solamente a workshop che permettono così di dedicarsi interamente ad un argomento garantendo così molti approfondimenti che spesso in una sessione singola non sono possibili. Personalmente devo dire che questo tipo di organizzazione mi piace molto :D.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;Per quanto mi riguarda, terrò una track su WCF dove parlerò di svariati argomenti come la sicurezza, la tracciabilità delle chiamate, l'estendibilità ed altro ancora quindi preparatevi perchè l'agenda è parecchio succulenta ;).&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;Visto che la modalità dell'evento mi piace parecchio, direi che l'iscrizione è un MUST. Visto che non ci facciamo mai mancare occasioni, vi ricordo che gli iscritti alla community hanno uno sconto del 15% (utilizzando il promotion code "aspitalia") e che comunque fino al 15 Maggio la tariffa è ridotta del 15%, quindi...... non avete scuse per non esserci.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;Stay Tuned...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/.NET_Framework_3.0/" rel="tag"&gt;.NET Framework 3.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Windows_Communication_Foundation/" rel="tag"&gt;Windows Communication Foundation&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>Eventi, .NET Framework 3.0, Windows Communication Foundation</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2493/Windows-Comunication-Foundation-Basta-ON-Tour-Milano.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2493/Windows-Comunication-Foundation-Basta-ON-Tour-Milano.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2493.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2493</trackback:ping></item><item><title>Virtual Earth &amp;#232; finalmente dotato di una ricerca decente</title><link>http://blogs.aspitalia.com/sm15455/post2481/Virtual-Earth-Finalmente-Dotato-Ricerca-Decente.aspx</link><pubDate>Sat, 11 Apr 2009 00:54:44 GMT</pubDate><description>&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2481' border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Tempo fa scrissi un articolo su Virtual Earth dicendo che la ricerca era il vero tallone d'achille di questa tecnologia. Non ho mai lavorato in maniera diretta con google maps, ma virtual earth mi sebrava davvero ben fatto con api semplici e ottime potenzialità. Tuttavia, il fatto che per trovare casa mia bisognasse inserire l'indirizzo, il cap la città e lo stato mi sembrava un'ottima causa per spingere l'adozione ai minimi storici.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;Leggo oggi che Microsoft ha rilasciato una nuova versione di Virtual Earth ed un aggiornamento del controllo. la maggior parte delle novità sono interne e non visibili agli sviluppatori, ma il fatto che ora la ricerca sembra trovare tutto senza problemi o necessità di inserire tutti i dati di un indirizzo mi fa ben sperare. Ripeto, non ho lavorato direttamente con google maps, ma se dopo altre prove mi convinco che la ricerca è efficiente, probabilmente comincierò a considerare Virtual Earth un prodotto molto più serio.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;Stay Tuned...&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>ASP.NET</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2481/Virtual-Earth-Finalmente-Dotato-Ricerca-Decente.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2481/Virtual-Earth-Finalmente-Dotato-Ricerca-Decente.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2481.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2481</trackback:ping></item><item><title>Prime impressioni su ASP.NET MVC</title><link>http://blogs.aspitalia.com/sm15455/post2473/Prime-Impressioni-ASP.NET-MVC.aspx</link><pubDate>Sat, 21 Mar 2009 11:39:52 GMT</pubDate><description>&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2473' border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Sto lavorando ormai da un paio di mesi su ASP.NET MVC. Premetto che sulla parte architetturale del pattern non ne sapevo niente quindi il mio primo approccio è stato puramente pratico. Dopo la prima fase di totale nausea e scomodità ho cominciato comunque ad apprezzare questo modo di sviluppare applicazioni web. I punti che mi interessa sottolineare sono:&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Produttività&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Sviluppare applicazioni sfruttando le webform è molto più semplice e veloce. Il fatto di avere a disposizione gli eventi è molto comodo così come un ciclo di vita molto più articolato che ci permette di infilarci ovunque. Tuttavia, non è vero come ho sentito dire che una pagina sviluppata con MVC richiede oltre il doppio del tempo. Certo quando l'interazione è particolarmente complessa probabilmente si deve lavorare parecchio, ma grazie ad ajax e jQuery il tutto diventa molto più semplice e a volte anche più pulito rispetto alle webform (vedi updatepanel). Ora che ho una certa dimestichezza posso dire che una funzionalità con un'interazione mediamente complessa sviluppata con MVC richiede circa il 15% in più del tempo. Certo è sempre più tempo, ma se ci si mettono i benefici che si traggono dall'utilizzo di MVC, è un tempo accettabile.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Non ho in mano numeri reali, ma la differenza si vede ad occhio nudo. Eliminando viewstate, ciclo di vita e altre menate varie delle webforms, ASP.NET MVC vince 6-0 6-3 6-2 in 60 minuti e senza possibilità di replica.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Curva di apprendimento&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Questo è il grosso neo. Non dico che ASP.NET MVC sia così complesso, ma in generale il cambio di paradigma di sviluppo rende il passaggio più complesso poichè per certi versi è completamente agli antipodi rispetto alle webforms. Questo in un team composto prettamente da figure junior richiede almeno 3/4 di settimane di studio e test. Rispetto a quanto ci vuole per passare da classic ASP ad ASP.NET webforms la curva è molto più complessa. &lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Eleganza&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;A chi dice che il codice con ASP.NET MVC sia più elegante io rispondo dicendo che non è assolutamente vero. Le porcate si possono fare tanto in MVC quando con le webforms e con la stessa facilità. La realtà è che MVC offre una grande opportunità per separare bene il codice dall'interfaccia e renderlo testabile, ma laddove la testabilità non interessa (e parliamoci chiaro LA VERA TESTABILITA' INTERESSA SOLO UNA PICCOLA PARTE DEI SITI CHE SI SVILUPPANO NEL MONDO) con webforms possiamo ugualmente scrivere dei siti eleganti facilmente manutenibili e con un'ottimo grado di separazione del codice. Sfruttando a dovere usercontrol e custom control, le pagine risultano anche più leggibili delle view di mvc ed il codice è ugualmente ben organizzato. Certo non è testabile via tool, ma nella maggior parte dei casi.. chissene.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Finale&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Dovete fare un sito e siete indecisi se utilizzare ASP.NET MVC o le webforms? La prima discriminante è la testabilità. Se questa è obbligatoria, allora MVC è la sola scelta, se la risposta è no, webforms parte favorito. La seconda discriminante è la quantità di interazione tra la pagina e l'utente. Se questa è molto complessa (diversi roundtrip al server, modifiche pesanti dell'html, etc etc) webforms è la via più semplice. Se invece si fa prettamente visualizzazione di dati e navigazione, ASP.NET MVC costituisce una valida alternativa.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;My 2 cents ...&amp;#160;&amp;#160; Stay tuned ...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/ASP.NET/" rel="tag"&gt;ASP.NET&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ASP.NET_3.5/" rel="tag"&gt;ASP.NET 3.5&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/ASP.NET_MVC/" rel="tag"&gt;ASP.NET MVC&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Pattern/" rel="tag"&gt;Pattern&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>ASP.NET, ASP.NET 3.5, ASP.NET MVC, Pattern</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2473/Prime-Impressioni-ASP.NET-MVC.aspx</guid><slash:comments>2</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2473/Prime-Impressioni-ASP.NET-MVC.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2473.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2473</trackback:ping></item><item><title>Entity Framework in action &amp;#232; in disponibile in MEAP</title><link>http://blogs.aspitalia.com/sm15455/post2460/Entity-Framework-Action-Disponibile-MEAP.aspx</link><pubDate>Mon, 16 Feb 2009 00:19:02 GMT</pubDate><description>&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2460' border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Da giovedì scorso il mio libro Entity Framework in action è ufficialmente disponibile in &lt;a href="http://www.manning.com/mostarda/" target="_blank"&gt;MEAP&lt;/a&gt; dal sito Manning.&lt;/p&gt; &lt;p&gt;Per ora sono disponibili i capitoli di introduzione, quello sul querying e quello sul mapping più una appendice dedicata a LINQ in generale ma molto presto ne vedrete anche altri.&lt;/p&gt; &lt;p&gt;E' inutile dire che la mia soddisfazione è immensa. Il libro è ancora ben lontano dall'essere perfetto ma mi piace come sta venendo su . speriamo piaccia anche a voi :D.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;Stay tuned.&lt;/p&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/ADO.NET_Entity_Framework/" rel="tag"&gt;ADO.NET Entity Framework&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;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>Entity Framework In Action, .NET Framework 3.5, ADO.NET Entity Framework, LINQ, ORM</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2460/Entity-Framework-Action-Disponibile-MEAP.aspx</guid><slash:comments>2</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2460/Entity-Framework-Action-Disponibile-MEAP.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2460.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2460</trackback:ping></item><item><title>Entity Framework e l'EDM</title><link>http://blogs.aspitalia.com/sm15455/post2457/Entity-Framework-EDM.aspx</link><pubDate>Sat, 31 Jan 2009 23:44:49 GMT</pubDate><description>&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2457' border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Penso che nessuno possa mettere in dubbio che il file di mapping sia una delle cose più complesse di Entity Framework. Microsoft ha prodotto un editor per semplificarne l'uso proprio perchè spesso, la differenze tra uno e l'altro ORM non è la potenza, ma la velocità di startup. In questo Entity Framework non ha quasi rivali, pochi click ed il dominio è generato con tanto di mapping verso il database.&lt;/p&gt; &lt;p&gt;Tuttavia, l'editor nella versione attuale è monco. Non supporta Complex Types (ok non moriremo per questo, però...), non supporta le DefiningQuery, sovrascrive ogni modifica fatta a mano nello storage layer (ogni tanto mi capita di metterci della roba che mi serve e doverla rimettere ad ogni aggiornamento mi rode), Non supporta il mapping di stored procedure polimorfiche, non supporta le QueryView. Insomma, ci sono diverse cose che qualunque progetto un tantinello più avanzato richiede e che il designer non supporta. Attenzione però, per quanto riguarda i complex types, se li si introduce a mano il designer smette di funzionare, mentre negli altri casi continua a funzionare tranquillamente.&lt;/p&gt; &lt;p&gt;Queste lacune mi hanno fatto pensare ancora una volta di più che conoscere il mapping è fondamentale. Personalmente ritengo le DefiningQuery una delle feature più interessanti perchè permettono di creare delle view direttamente nel modello. Queste view sono interrogabili filtrabili etc etc e spesso risolvono tutti quei problemi di mapping che non sono gestibili in maniera nativa. Non emergendo nel designer, quanti le conoscono? Quanti le hanno mai usate? Nella mia esperienza in alcune aziende la risposta è: zero. &lt;/p&gt; &lt;p&gt;Mi riprometto di parlare di più di questa interessante feature di EF. Nel frattemo ribadisco quello che ho detto ad una persona tempo fa: non dire che una cosa non la puoi mappare se prima non sei passato per le DefiningQuery.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;Stay Tuned...&lt;/p&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/ADO.NET_Entity_Framework/" rel="tag"&gt;ADO.NET Entity Framework&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;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>Entity Framework In Action, .NET Framework 3.5, ADO.NET Entity Framework, LINQ, ORM</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2457/Entity-Framework-EDM.aspx</guid><slash:comments>2</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2457/Entity-Framework-EDM.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2457.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2457</trackback:ping></item><item><title>Entity Framework e le Navigation Properties</title><link>http://blogs.aspitalia.com/sm15455/post2446/Entity-Framework-Navigation-Properties.aspx</link><pubDate>Sat, 27 Dec 2008 23:12:26 GMT</pubDate><description>&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2446' border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Una relazione è per sua natura bidirezionale. Quello che non è sempre bidirezionale è la sua rappresentazione nel domain model. Prendiamo ad esempio la relazione tra clienti e ordini. Avere a disposizione il cliente di un ordine ha senso, ma ha senso avere a disposizione la lista degli ordini di un cliente? la risposta esatta come sempre è.... dipende. Ora non voglio disquisire sulla validità o meno della relazione ma su come Entity Framework affronta il problema.&lt;/p&gt; &lt;p&gt;Per default, il wizard si accorge della relazione tra le tabelle e genera un domain model dove le relazioni tra le classi sono bidirezionali, quindi un ordine ha la relazione verso il cliente e il cliente ha una relazione verso gli ordini. Supponiamo che non ci sia utile in alcun modo la relazione tra cliente e ordine. La logica vuole che questa sia eliminata. Il primo problema è che il designer non lo permette; bisogna andare a mano nel codice ed eliminare la proprietà Ordini dalla classe Cliente e nel conceptual model del file di mapping eliminare il riferimento alla proprietà cancellata ed il gioco è fatto. Il secondo problema risale a LINQ to Entities. Abbiamo bisogno della proprietà Ordini per fare le nostre query? In tutti i progetti che ho seguito la risposta è stata no. Grazie al fatto che comunque l'ordine mantiene la proprietà Cliente si riesce a risalire a qualunque dato di cui si ha bisogno. L'unico vero problema sono le query generate a run-time. La regola numero uno è che bisogna sempre vedere le query generate per evitare problemi.&lt;/p&gt; &lt;p&gt;Comunque per ora la mia linea guida è quella di non creare proprietà inutili che complicano solo la vita.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;p&gt;Stay tuned...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/.NET_Framework/" rel="tag"&gt;.NET Framework&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/ADO.NET_Entity_Framework/" rel="tag"&gt;ADO.NET Entity Framework&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;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>Entity Framework In Action, .NET Framework, .NET Framework 3.5, ADO.NET Entity Framework, LINQ, ORM</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2446/Entity-Framework-Navigation-Properties.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2446/Entity-Framework-Navigation-Properties.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2446.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2446</trackback:ping></item><item><title>Dubbio amletico sul codice SQL di Entity Framework con il Table per Hierarchy</title><link>http://blogs.aspitalia.com/sm15455/post2441/Dubbio-Amletico-Codice-SQL-Entity-Framework-Table-Hierarchy.aspx</link><pubDate>Tue, 09 Dec 2008 00:14:02 GMT</pubDate><description>&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2441' border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Stavo facendo un pò di prove per smanettare con la gestione del Table per Hierarchy in Entity Framework. Innanzitutto dopo un impatto iniziale alquanto dramamtico, devo dire che il designer visuale mi ha aiutato non poco a disegnare la struttura partendo dalla classe autogenerata dal database. Visto che il designer è forse la cosa uscita peggio da Entity Framework, tutto sommato direi che questa è una buona cosa.&lt;/p&gt; &lt;p&gt;Dopo aver mappato tutto come si deve, ho eseguito una semplice query per trovare tutti gli oggetti: ctx.Company().ToList();&lt;/p&gt; &lt;p&gt;Quello che mi ha sorpreso è vedere che il generatore di codice di Entity Framework ha generato questo SQL:&lt;/p&gt; &lt;p&gt;SELECT &lt;br /&gt;[Extent1].[Type] AS [Type], &lt;br /&gt;[Extent1].[CompanyId] AS [CompanyId], &lt;br /&gt;[Extent1].[Name] AS [Name], &lt;br /&gt;[Extent1].[BillingAddress] AS [BillingAddress], &lt;br /&gt;[Extent1].[BillingCity] AS [BillingCity], &lt;br /&gt;[Extent1].[BillingZipCode] AS [BillingZipCode], &lt;br /&gt;[Extent1].[BillingCountry] AS [BillingCountry], &lt;br /&gt;[Extent1].[ShippingAddress] AS [ShippingAddress], &lt;br /&gt;[Extent1].[ShippingCity] AS [ShippingCity], &lt;br /&gt;[Extent1].[ShippingZipCode] AS [ShippingZipCode], &lt;br /&gt;[Extent1].[ShippingCountry] AS [ShippingCountry], &lt;br /&gt;[Extent1].[WSUserName] AS [WSUserName], &lt;br /&gt;[Extent1].[WSPassword] AS [WSPassword], &lt;br /&gt;[Extent1].[WSEnabled] AS [WSEnabled] &lt;br /&gt;FROM [dbo].[Company] AS [Extent1] &lt;br /&gt;WHERE ([Extent1].[Type] = 'C') OR ([Extent1].[Type] = 'S')&lt;/p&gt; &lt;p&gt;Ora, type è la colonna che mi fa da discriminatore tra i vari tipi che la tabella contiene, ma visto che tanto sto chiedendo tutti i tipi, è necessaria quella OR? Non capisco se sta li per sicurezza così che se ci sono altri record con un type diverso questi vengono ignorati, oppure sta li per errore.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Stay tuned...&lt;/p&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/ADO.NET_Entity_Framework/" rel="tag"&gt;ADO.NET Entity Framework&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;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>Entity Framework In Action, .NET Framework 3.5, ADO.NET Entity Framework, LINQ, ORM</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2441/Dubbio-Amletico-Codice-SQL-Entity-Framework-Table-Hierarchy.aspx</guid><slash:comments>3</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2441/Dubbio-Amletico-Codice-SQL-Entity-Framework-Table-Hierarchy.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2441.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2441</trackback:ping></item><item><title>Entity Framework e le cancellazioni a cascata</title><link>http://blogs.aspitalia.com/sm15455/post2435/Entity-Framework-Cancellazioni-Cascata.aspx</link><pubDate>Fri, 28 Nov 2008 01:36:35 GMT</pubDate><description>&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2435' border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Sono masochista oltre ogni limite: utilizzo Entity Framework e non uso il designer. Non è un problema di funzionamento del tool, è che ormai la struttura degli XML, seppur difficile all'inizio, mi è chiara e poi sono sempre i soliti 4 nodi che devo usare e grazie all'intellisense in Visual Studio è anche piuttosto facile.&lt;/p&gt; &lt;p&gt;Stasera per fare una prova ho voluto usare il tool visuale. Dopo aver creato la classica situazione ordini-dettagli, mi accorgo che se cancello un'ordine senza aver caricato i dettagli la cancellazione scoppia. Subito penso ad un problema di foreign key sul db, ed infatti il problema risiedeva li. tutto bello aggiorno il modello e noto che nella sezione del ssdl la delete cascade è fedelmente riportata. &lt;/p&gt; &lt;p&gt;Riprovo e ricevo ancora errore e qui comincio ad interrogarmi perchè non capisco il problema. Alla fine scopro che pur aggiornando il modello, nel ssdl la delete-cascad veniva corretaente riportata, menre nel csdl no, lasciando un bel buco aperto. La soluzione per me è stata semplice perchè ho cancellato il file edmx e l'ho ricreato; per quelli che non possono permettersi di fare una cosa del genere, ricordatevi di aggiornare a mano il csdl.&lt;/p&gt; &lt;p&gt;&lt;code&gt;&lt;/p&gt; &lt;p&gt;&amp;lt;Association Name=&amp;quot;FK_OrderDetail_Order&amp;quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;End Role=&amp;quot;Order&amp;quot; Type=&amp;quot;EFInactionOrdersModel.Store.Order&amp;quot; Multiplicity=&amp;quot;1&amp;quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;OnDelete Action=&amp;quot;Cascade&amp;quot; /&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/End&amp;gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/p&gt; &lt;p&gt;&amp;lt;/Association&amp;gt;&lt;/p&gt; &lt;p&gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Stay Tuned...&lt;/p&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/ADO.NET_Entity_Framework/" rel="tag"&gt;ADO.NET Entity Framework&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/XML/" rel="tag"&gt;XML&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>.NET, .NET Framework 3.5, ADO.NET Entity Framework, LINQ, XML</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2435/Entity-Framework-Cancellazioni-Cascata.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2435/Entity-Framework-Cancellazioni-Cascata.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2435.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2435</trackback:ping></item><item><title>Entity Framework vNext</title><link>http://blogs.aspitalia.com/sm15455/post2425/Entity-Framework-VNext.aspx</link><pubDate>Wed, 29 Oct 2008 16:16:33 GMT</pubDate><description>&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2425' border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Ieri pomerggio l'ulimo slot è stato dedicato a Entity Frameork vNext. Devo dire che le novità sembrano molto interessanti. A parte il supporto per la Persistence Ignorance che era una cosa nota, ci sono altre caratteristiche che saltano agli occhi.&lt;/p&gt; &lt;p&gt;La prima è il supporto di un modello di sviluppo EDM-free. praticamente si generano le classi POCO. poi nell'objectcontext si mappano le classi al database attraverso degli attributi e i file di mapping di EF vengono generati a run-time. Questo consente di generare classi in maniera semplice senza avere nessun riferimento al db e di lasciare tutto il mapping ad EF. Non so onestamente come si gestiscono feature come l'ereditarietà, ma vedremo. questo approccio è sicuramente interessante quando il domain model è molto semplice.&lt;/p&gt; &lt;p&gt;Un'altro scenario supportato dal designer è quello di disegnare visualmente le classi e generare direttamente il database dalla loro struttura. Ad ogni cambiamento delle classi si da ora a possibilità di allineare il database, Questa cosa mi piace di meno perchè la vedo pericolosa, ma comunque in uno scenario di Domain-Model first ha il suo perchè.&lt;/p&gt; &lt;p&gt;Il lazy loading viene ora implementato in maniera trasparente impostando la proprietà deferredloadingenabled dell'objectcontext a true (non ricorda vagamente linq to sql?). Ovviamente, per mantenere la compatibilità, questa proprietà di default è a false e va impostata oni volta a true (se se ne ha bisogno).&lt;/p&gt; &lt;p&gt;Insomma, Entity Framework sembra diventare sempre più potente. Se alcuni problemi di mapping verranno risolti ed il designer viene reso stabile, penso che avremo per le mani un gran bel prodotto pronto per competere con tutti gli altri.&lt;/p&gt; &lt;p&gt;Stay Tuned...&lt;/p&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/ADO.NET_Entity_Framework/" rel="tag"&gt;ADO.NET Entity Framework&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;a href="http://tags.aspitalia.com/PDC_2008/" rel="tag"&gt;PDC 2008&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>PDC 2008, .NET Framework 3.5, ADO.NET Entity Framework, LINQ, ORM</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2425/Entity-Framework-VNext.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2425/Entity-Framework-VNext.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2425.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2425</trackback:ping></item><item><title>Cache a tutta Velocity</title><link>http://blogs.aspitalia.com/sm15455/post2423/Cache-Velocity.aspx</link><pubDate>Wed, 29 Oct 2008 00:26:54 GMT</pubDate><description>&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2423' border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Titolo banalissimo ma la giornata l'ho dedicata a Velocity. Visto che oggi è stata anche rilasciata la CTP2 perchè non dargli una vera occhiata da vicino. La prima sessione ha mostrato quello che già si sapeva dalla CTP1 ovvero la suddivisione in l'architettura di base che ogni developer deve conoscere per usare velocity, mentre la seconda ha mostrato la vera potenza di questo framework di caching. Infatti sono state mostrate alcune cose che spiegano come il prodotto sia ben fatto.&lt;/p&gt; &lt;p&gt;Innanzitutto c'è una gestione dei lock, quindi si possono recuperare oggetti e loccarli fino al rilascio o alla scadenza di un tempo (Ovviamente ci sono 2 API distinte una per recuperare i dati senza lockare e un aper locckare). Quello che più mi piace è il lock ottimistico dei dati. Ogni dato in cache ha un numero di versione e quindi se lo si recupera e poi riaggiorna, ma nel frattempo qualche altro processo ha modificato il dato nella cache, l'aggiornamento&amp;nbsp; va male. Insomma un locking ottimistico come sul database.&lt;/p&gt; &lt;p&gt;La replicazione della cache è fantastica in quanto avviene in un thread separato e quindi le performance dell'applicazione non vengono intaccate. Ovviamente in caso di caduta di un nodo, i dati sono replicati e velocity è in grado di recuperare comunque i dati senza causare problemi all'applicazione che rimane &amp;quot;ignorante&amp;quot; da questi problemi. Ovviamente velocity può essere usato anche in locale e vedendo come la cache di ASP.NET cede di fronte a carichi elevati, questa è una buona cosa.&lt;/p&gt; &lt;p&gt;La cosa che comunque più mi piace è che gli oggetti possono essere ritrovati usando LINQ. Sebbene questa cosa era scontata, la cosa bella è che la ricerca avviene tramite un provider che implementa IQueryable&amp;lt;T&amp;gt; e non tramite la classica ricerca IEnumerable&amp;lt;T&amp;gt;.&lt;/p&gt; &lt;p&gt;Naturalmente, Velocity usa WCF come meccanismo di trasporto quindi ho qualche dubbio sulle performance reali, ma stando alle statistiche che hanno mostrato sembra che abbiano trovato la chiave per spingere sull'accelleratore.&lt;/p&gt; &lt;p&gt;Che dire Velocity sembra promettente, speriamo bene :)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Stay tuned...&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/Cache/" rel="tag"&gt;Cache&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/PDC_2008/" rel="tag"&gt;PDC 2008&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/Architettura/" rel="tag"&gt;Architettura&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>PDC 2008, Cache, Architettura</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2423/Cache-Velocity.aspx</guid><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2423/Cache-Velocity.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2423.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2423</trackback:ping></item><item><title>Svelato il C# 4.0 alla PDC</title><link>http://blogs.aspitalia.com/sm15455/post2417/Svelato-CSharp-4.0-PDC.aspx</link><pubDate>Mon, 27 Oct 2008 22:12:00 GMT</pubDate><description>&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2417' border="0" style="width:1px; height:1px;" /&gt;
&lt;p&gt;I tre mariachi stanno seguendo in questo momento la sessione sul C# 
4.0 alla PDC. Come sempre Anders Hejsberg è il mattatore della scena e sta 
spiegando il futuro come solo il papà del linguaggio sa fare. &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Le novità sono molto interessanti.&lt;/p&gt;
&lt;p&gt;La principale, come tutti sanno, è che il C# supporterà i linguaggi dinamici 
attraverso una nuova parola chiave dynamic. Questa è una piccola svolta nel 
mondo statico del C#, infatti d'ora in poi potremo aggiungere nuove proprietà a 
qualunque classe direttamente a runtime. Sinceramente questa cosa non dico che è 
una mezza schifezza, ma come minimo mi lascia perplesso. Non dubito che i 
linguaggi dinamici abbiano una loro posizione, ma fino ad adesso non mi è mai 
capitato di avere bisogno di questa feature nelle mie applicazioni. 
Vedremo...&lt;/p&gt;

&lt;p&gt;Un'altra importante novità è la riscrittura del compilatore che adesso 
diventa un servizio (Compiler as a Service mi dice Ughetto) che espone le 
porprie API permettendo una nuova serie di funzionalità  e la semplificazione di 
alcune esistenti. Adesso potremo scrivere codice C# in una stringa ed eseguirla 
a runtime evitando di usare la reflection. Insomma se non si era ancora capito, 
la tipizzazione sembra diventare sempre meno importante. :)&lt;/p&gt;


&lt;p&gt;Poi c'è la covarianza per quanto riguarda le liste di oggetti. Non è che ci ho onestamente capito molto, quindi aspetto Cristian che sicuramente saprà spiegare meglio di me :).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;L'ultima novità che mi ricordo riguarda la possibilità di assegnare un valore 
di default ai parametri delle funzioni e di poter passare alle funzioni i 
parametri specificando il nome. Quest significa che se una funzione accetta 10 
parametri, ma ne dobbiamo passare solo 2 e gli altri possono mantenere quello di 
default possiamo scrivere qualcosa del genere: Call(par1: &amp;quot;Valore&amp;quot;, par2: 
2); &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Insomma niente di particolarmente emozionante, io non vedo molto bene la 
mancanza di tipizzazione. Che ci volete fare, già solo vedere che la dinamicità 
in C# è abbilitata grazie ad una classe statica che si chiama Dynamic non è il 
massimo :)&lt;/p&gt;

&lt;p&gt;Stay tuned...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href="http://tags.aspitalia.com/.NET_Framework/" rel="tag"&gt;.NET Framework&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/.NET_Framework_4.0/" rel="tag"&gt;.NET Framework 4.0&lt;/a&gt;, &lt;a href="http://tags.aspitalia.com/PDC_2008/" rel="tag"&gt;PDC 2008&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>PDC 2008, .NET Framework, .NET Framework 4.0</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2417/Svelato-CSharp-4.0-PDC.aspx</guid><slash:comments>1</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2417/Svelato-CSharp-4.0-PDC.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2417.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2417</trackback:ping></item><item><title>Chi si ricorda dei DataSet?</title><link>http://blogs.aspitalia.com/sm15455/post2402/Ricorda-DataSet.aspx</link><pubDate>Wed, 08 Oct 2008 20:04:38 GMT</pubDate><description>&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2402' border="0" style="width:1px; height:1px;" /&gt;&lt;p&gt;Mi ricordo le prime demo che ho visto riguardo al .NET. Per l'accesso ai dati il DataSet sembrava l'autentica panacea per tutti i mali. A distanza di ormai 7 anni (un'infinità in termini informatici), i DataSet sono diventati il male impersonificato. &lt;/p&gt; &lt;p&gt;Fondamentalmente questo è quanto di meglio potesse accadere per certi tipi di applicazioni, ma parliamoci chiaro, in Italia si fanno una miriade di piccole-medie applicazioni che non hanno alcuna complessità e che quindi non trarrebbero vantaggio alcuno dall'uso di un bel domain model con un datalayer che persiste tramite ORM o a mano. In questi casi i DataSet non sono solo la linea più veloce, ma anche quella più giusta. Se una piccola applicazione è pagata poco o necessità di essere sviluppata in poco tempo, i DataSet offrono quella velocità di sviluppo e semplicità di apprendimento che un'applicazione con domain model non offre. &lt;/p&gt; &lt;p&gt;Insomma tutto questo discorso per dire che per la voglia di sfighettare, si finisce spesso per costruire dei castelli quando basterebbe un appartamento da 50Mq. Ho visto un'applicazione scritta con domain model che gestisce solo 4/5 entità e richiede quindi almeno il doppio del codice rispetto al dataset. Per carità, l'applicazione è performante e bella da vedere, ma con i dataset la si faceva ancora in quasi metà tempo e senza grandi sforzi. La domanda interessante e che quando ho chiesto il perchè di questa scelta la risposta è stata: &amp;quot;i dataset sono il male, fare un tree tier aiuta a mantenere tutto pulito&amp;quot;. Ineccepibile, se non fosse che per finire l'applicazione ci hanno messo 5 giorni in più in 2 persone. &lt;/p&gt; &lt;p&gt;Il consiglio è sempre lo stesso: fidatevi ancora dei dataset. Non hanno un campo di applicazione ampio, ma ce l'hanno e forse potrebbe essere proprio il vostro :D.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Stay tuned...&lt;/p&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/Architettura/" rel="tag"&gt;Architettura&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/Pattern/" rel="tag"&gt;Pattern&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href="http://www.aspitalia.com/"&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</description><dc:creator>Stefano Mostarda</dc:creator><category>Design Patterns, ADO.NET, Architettura, ORM, Pattern</category><guid isPermaLink="true">http://blogs.aspitalia.com/sm15455/post2402/Ricorda-DataSet.aspx</guid><slash:comments>12</slash:comments><wfw:comment>http://blogs.aspitalia.com/sm15455/post2402/Ricorda-DataSet.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/SM15455/CommentRSS2402.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2402</trackback:ping></item></channel></rss>