<?xml version="1.0" encoding="iso-8859-15"?><feed xmlns="http://www.w3.org/2005/Atom" 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/" xml:lang="it-it"><title>blogs.ASPItalia.com</title><id>http://blogs.aspitalia.com/cradle/</id><link href="http://blogs.aspitalia.com/cradle/" rel="self" type="application/rss+xml" /><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/cradle/" /><generator uri="http://feed.aspitalia.com/" version="1.0">feed.ASPItalia.com 'Caesar Reborn' 2010.1.29</generator><author><name>blogs.ASPItalia.com</name><uri>http://blogs.aspitalia.com/cradle/</uri></author><updated>2009-11-17T23:58:01+00:00</updated><icon>http://gui.ASPItalia.com/images/aspitalia/syndication.gif</icon><entry><title>Rilasciato ASP.NET MVC 2 Beta</title><id>http://blogs.aspitalia.com/cradle/post2571/Rilasciato-ASP.NET-MVC-Beta.aspx</id><updated>2009-11-17T23:58:01+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2571' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;I primi effetti di PDC iniziano a farsi vedere: &#232; stata rilasciata oggi, infatti, la beta di ASP.NET MVC 2 (solo per VS2008) che introduce alcune novit&#224; rispetto alla Preview 2 presente in Visual Studio 2010 Beta 2. Cerchiamo di vedere cosa cambia e quali sono le nuove funzionalit&#224; disponibili con questa nuova versione:&lt;/p&gt; &lt;h3&gt;Validazione Client-side&lt;/h3&gt; &lt;p&gt;La Preview 2 gi&#224; aveva introdotto un supporto built-in per la validazione client-side, utilizzando un opportuno plugin per jQuery. Nella versione Beta, invece, questa funzionalit&#224; &#232; compresa all'interno delle librerie Javascript di Microsoft, pertanto &#232; sufficiente includere&lt;/p&gt; &lt;ul&gt; &lt;li&gt;MicrosoftAjax.js &lt;/li&gt; &lt;li&gt;MicrosoftMVCAjax.js &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;e richiamare il metodo&lt;/p&gt; &lt;p&gt;&lt;code&gt;&amp;lt;% Html.EnableClientValidation(); %&amp;gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;dalla View, affinch&#233; tutto funzioni.&lt;/p&gt; &lt;h3&gt;Add Area&lt;/h3&gt; &lt;p&gt;Il men&#249; contestuale di un progetto MVC all'interno del solution explorer consente adesso di aggiungere in maniera guidata una nuova area all'interno dell'applicazione. Ricordiamo che le Area altro non sono che una suddivisione logica del progetto stesso in pi&#249; sottocartelle, una per ogni &quot;modulo&quot;, all'interno delle quali trova posto la struttura di cartelle standard di MVC (Views, Controllers, Models)&lt;/p&gt; &lt;h3&gt;Modifiche al funzionamento dei TempData&lt;/h3&gt; &lt;p&gt;TempData, come gi&#224; abbiamo indicato nello script &lt;a href=&quot;http://www.aspitalia.com/liste/usag/script.aspx?id=989&quot;&gt;#989&lt;/a&gt;, consente di mantenere momentaneamente in uno storage (per default la session di ASP.NET) alcuni dati, che vengono poi automaticamente rimossi al ciclo di request response successivo. In MVC 2 Beta, invece, questi dati restano memorizzati fino al loro effettivo utilizzo, dopo di che vengono automaticamente marcati per l'eliminazione. Il metodo &lt;strong&gt;Keep&lt;/strong&gt; consente comunque di conservarli anche se sono stati utilizzati.&lt;/p&gt; &lt;h3&gt;Strong typed UI Helpers&lt;/h3&gt; &lt;p&gt;Gi&#224; nelle preview 2 erano presenti i primi 3 esempi di UI Helpers (Editor, Label e Display) che, sfruttando le lambda expression, rendevano possibile la creazione di elementi di interfaccia collegati a propriet&#224; del model in maniera strong typed e con il supporto di Intellisense e Refactoring di Visual Studio. Grazie ad essi, ad esempio, si pu&#242; generare un elemento Input per una propriet&#224; Descrizione del model tramite la sintassi&lt;/p&gt; &lt;p&gt;&lt;code&gt;&amp;lt;%= Html.EditorFor(m =&amp;gt; m.Descrizione) %&amp;gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;In questa nuova versione sono stati aggiunti anche&lt;/p&gt; &lt;ul&gt; &lt;li&gt;ValidationMessageFor &lt;/li&gt; &lt;li&gt;TextAreaFor &lt;/li&gt; &lt;li&gt;TextBoxFor &lt;/li&gt; &lt;li&gt;HiddenFor &lt;/li&gt; &lt;li&gt;DropDownListFor &lt;/li&gt; &lt;/ul&gt; &lt;h3&gt;Esecuzione asincrona delle action tramite un AsyncController&lt;/h3&gt; &lt;p&gt;ASP.NET MVC 2 Beta introduce ufficialmente una interessantissima caratteristica che, fino ad oggi, &#232; stata parte del progetto sperimentale ASP.NET MVC Futures. Tramite la classe base AsyncController, infatti, &#232; ora possibile realizzare Action in grado di invocare metodi asincroni, la cui esecuzione viene presa in carico da un worker thread esterno a quello utilizzato da ASP.NET.&lt;/p&gt; &lt;h3&gt;Download&lt;/h3&gt; &lt;p&gt;Il download di questa nuova versione di ASP.NET MVC 2 &#232; disponibile a &lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;familyid=4817cdb2-88ea-4af4-a455-f06b4c90fd2c&quot;&gt;questo link&lt;/a&gt;, dove trovate anche le note di rilascio. Un'ultima nota riguarda la compatibilit&#224; con le versioni di Visual Studio. E' supportato il solo Visual Studio 2008 SP1, quindi niente versione 2010 per il momento. Tra l'altro, visto che 2008 e 2010 condividono alcune componenti, l'installazione anche sul solo 2008 &lt;strong&gt;non &#232; supportata se risulta installata anche la versione 2010 Beta 2&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;Enjoy!&lt;/p&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_4.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 4.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET_4.0/&quot; rel=&quot;tag&quot;&gt;ASP.NET 4.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET_MVC/&quot; rel=&quot;tag&quot;&gt;ASP.NET MVC&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/ASP.NET/&quot; rel=&quot;tag&quot;&gt;ASP.NET&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2010 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco De Sanctis</name></author><category term="Misc"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/cradle/post2571/Rilasciato-ASP.NET-MVC-Beta.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2571/Rilasciato-ASP.NET-MVC-Beta.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2571.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2571</trackback:ping></entry><entry><title>Login sul network ASPItalia tramite Facebook</title><id>http://blogs.aspitalia.com/cradle/post2563/Login-Network-ASPItalia-Tramite-Facebook.aspx</id><updated>2009-11-09T14:16:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2563' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;
&lt;p&gt;Eh s&#236;, noi di ASPItalia non ci fermiamo proprio mai! Durante l'ultimo weekend io e &lt;a href=&quot;http://blogs.aspitalia.com/daniele/&quot;&gt;Daniele&lt;/a&gt; ci siamo messi all'opera per allargare la schiera di provider di autenticazione supportati. Il risultato &#232; che, da oggi, potete utilizzare il vostro account di Facebook per loggarvi su uno qualsiasi dei siti del network. Abilitare questa funzionalit&#224; &#232; semplicissimo: &#232; sufficiente recarsi sulla pagina di &lt;a href=&quot;https://secure.aspitalia.com/profile/login.aspx&quot;&gt;Login&lt;/a&gt;, fare click sull'icona di Facebook Connect e seguire le istruzioni per collegare l'account di Facebook a quello di ASPItalia.&lt;br /&gt;&lt;br /&gt;Enjoy :-)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&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/Security/&quot; rel=&quot;tag&quot;&gt;Security&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2010 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco De Sanctis</name></author><category term="Misc"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/cradle/post2563/Login-Network-ASPItalia-Tramite-Facebook.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2563/Login-Network-ASPItalia-Tramite-Facebook.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2563.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2563</trackback:ping></entry><entry><title>Real Code Day 4.0: Agenda (quasi) completata!</title><id>http://blogs.aspitalia.com/cradle/post2561/Real-Code-Day-4.0-Agenda-Quasi-Completata.aspx</id><updated>2009-11-02T10:16:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2561' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Bene, il RCD 4 inizia a prendere forma e essendo questo il primo evento di una certa portata in cui sono parte dell'organizzazione, beh.. lasciatemelo dire, ne sono proprio orgoglioso! L'agenda &#232; praticamente completa (&lt;a href=&quot;http://www.aspitalia.com/eventi/21/Real-Code-Day-4.0-Costruire-Applicazioni-Reali-Firenze.aspx&quot;&gt;la trovate qui&lt;/a&gt;) e, a mio modo di vedere, &#232; tanto tanto tanto interessante e sapete perch&#233;? Perch&#233; realizzeremo un'applicazione from scratch, partendo cio&#233; dai requisiti per arrivare a ben 4 &amp;quot;incarnazioni&amp;quot; differenti (Silverlight, WPF, WebForms e MVC), puntando il dito soprattutto su quando e perch&#233; va usato l'uno invece che l'altro.&lt;/p&gt;&lt;p&gt;Il tutto rigorosamente fedele alla rodata formula &amp;quot;zero-slides&amp;quot; di RCD e, soprattutto, a base delle pi&#249; recenti tecnologie che il mercato offre, o meglio, offrir&#224;, nei prossimi mesi, ossia .NET Framework 4.0 e Visual Studio 2010, con in pi&#249; una bonus session assolutamente da non perdere! E se tutto questo non bastasse a farvi venire l'acquolina in bocca e prenotare il primo treno per Firenze, sappiate che MVC non vuol dire solo Model View Controller. Non dico di pi&#249; perch&#233; sono sotto NDA! ;-)&lt;/p&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_4.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 4.0&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/ASP.NET/&quot; rel=&quot;tag&quot;&gt;ASP.NET&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET_4.0/&quot; rel=&quot;tag&quot;&gt;ASP.NET 4.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET_MVC/&quot; rel=&quot;tag&quot;&gt;ASP.NET MVC&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/Entity_Framework/&quot; rel=&quot;tag&quot;&gt;Entity Framework&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Object_Oriented_Programming/&quot; rel=&quot;tag&quot;&gt;Object Oriented Programming&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_4.0/&quot; rel=&quot;tag&quot;&gt;Silverlight 4.0&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_7/&quot; rel=&quot;tag&quot;&gt;Windows 7&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Windows_Client/&quot; rel=&quot;tag&quot;&gt;Windows Client&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Windows_Presentation_Foundation/&quot; rel=&quot;tag&quot;&gt;Windows Presentation Foundation&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) 2010 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco De Sanctis</name></author><category term="Misc"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/cradle/post2561/Real-Code-Day-4.0-Agenda-Quasi-Completata.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2561/Real-Code-Day-4.0-Agenda-Quasi-Completata.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2561.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2561</trackback:ping></entry><entry><title>.NET Framework 4.0 Beta 2: ASP.NET MVC 2 Preview 2</title><id>http://blogs.aspitalia.com/cradle/post2553/.NET-Framework-4.0-Beta-2-ASP.NET-MVC-Preview.aspx</id><updated>2009-10-21T13:11:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2553' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;
&lt;p&gt;ASP.NET MVC 2 ha purtroppo mancato l'appuntamento con la prima beta release di Visual Studio 2010, per cui c'&#232; veramente tanto da dire su quanto &#232; stato incluso nella Beta 2.&lt;/p&gt;&lt;h3&gt;ModelMetadata e Model Validation&lt;/h3&gt;&lt;p&gt;Una prima novit&#224; &#232; rappresentata dall'introduzione dei ModelMetadata, vale a dire un'infrastruttura per associare metadati ad un model che consente, ad esempio, di specificare la formattazione secondo cui mostrare a video una property, la sua descrizione o indicare un'insieme di validatori che ne verifichino la consistenza. &lt;br /&gt;Quest'infrastruttura &#232; completamente provider-based: ASP.NET MVC 2 fornisce gi&#224; un DataAnnotationsMetadataProvider che consente di recuperare queste informazioni tramite le DataAnnotations introdotte in ASP.NET Dynamic Data, ma &#232; possibile realizzare propri provider per recuperarle da una qualsiasi sorgente (XML, Database, ecc.).&lt;br /&gt;Un ulteriore plauso va anche all'aggiunta di un supporto ufficiale alla validazione lato client, realizzata tramite jQuery e, ancora una volta, impostabile in maniera del tutto dichiarativa direttamente sul model tramite l'infrastruttura di DataAnnotiations.&lt;/p&gt;&lt;h3&gt;HttpVerb override&lt;/h3&gt;&lt;p&gt;Come sappiamo, gi&#224; dalla prima versione di MVC &#232; possibile specificare a quali verbi Http (GET, POST, PUT, DELETE) debba rispondere una action. Essi sono molto utili nel caso si voglia utilizzare ASP.NET MVC per esporre servizi REST, mentre il loro utilizzo rimane di fatto molto limitato nell'ambito di applicazioni con interfaccia utente, dato che i browser tipicamente utilizzano solo GET e POST.&lt;br /&gt;ASP.NET MVC 2 introduce un nuovo Html Helper, chiamato HttpMethodOverride, che pu&#242; essere utilizzato in una view per renderizzare un particolare campo Hidden:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;form action=&amp;quot;/sampleDeleteAction&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;br /&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0; &amp;lt;%= Html.HttpMethodOverride(HttpVerbs.Delete) %&amp;gt;&lt;br /&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0; ...&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;L'effetto &#232; quello di sovrascrivere l'effettivo verbo inviato dal browser (nella fattispecie, un POST) con un DELETE, scatenando quindi l'esecuzione di una action decorata con HttpDeleteAttribute:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;[HttpDelete]&lt;br /&gt;public ActionResult SampleDeleteAction(...)&lt;br /&gt;{&lt;br /&gt;&amp;#xa0; // ... more code here&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Tutto questo per fare cosa? Semplice: se esponiamo API di tipo REST e magari gestiamo tutti i verbi Http e non solo Get e Post, possiamo comunque continuare a riutilizzare i medesimi controller anche quando invece interagiamo con un browser.&lt;/p&gt;&lt;h3&gt;Single-Project Areas&lt;/h3&gt;&lt;p&gt;Gi&#224; in ASP.NET MVC 2 Preview 1 era stato introdotto il concetto di Project Areas, tramite le quali era possibile suddividere un'applicazione di grandi dimensioni in diversi progetti Visual Studio indipendenti. La preview 2 amplia questa funzionalit&#224; tramite le Single Project Areas, ossia suddivisioni logiche dell'applicazione (e quindi controller, model, view e regole di routing indipendenti) all'interno dello stesso progetto.&lt;br /&gt;Maggiori informazioni sul concetto di Area possono essere reperite in &lt;a href=&quot;http://weblogs.asp.net/scottgu/archive/2009/07/31/asp-net-mvc-v2-preview-1-released.aspx&quot;&gt;questo post&lt;/a&gt; di Scott Guthrie, relativo alla vecchia Preview 1.&lt;/p&gt;&lt;h3&gt;Html Encoding Code Block&lt;/h3&gt;&lt;p&gt;Il metodo pi&#249; sicuro per evitare attacchi di script injection nella propria web application &#232; quello di effettuare l'HtmlEncode di qualsiasi dato potenzialmente a rischio nell'ambito del rendering di una view. Utilizzando la sintassi compatta&lt;br /&gt;&lt;code&gt;First Name: &amp;lt;%: Model.FirstName %&amp;gt;&lt;br /&gt;Last Name: &amp;lt;%: Model.FirstName %&amp;gt;&lt;/code&gt;&lt;br /&gt;l'engine di rendering della view si occupa di eseguire in maniera del tutto trasparente questo passaggio. Per approfondire, si veda &lt;a href=&quot;http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx&quot;&gt;questo post&lt;/a&gt; sul blog di Phil Haack.&lt;/p&gt;&lt;h3&gt;Non finisce qui!&lt;/h3&gt;&lt;p&gt;In aggiunta a quanto indicato sino ad ora, ASP.NET MVC 2 Preview 2 propone anche tutta una serie di migliorie, bug fix e performance improvements che sono descritte, analogamente a queste nuove funzionalit&#224;, nelle release notes ufficiali, scaricabili a &lt;a href=&quot;http://go.microsoft.com/fwlink/?LinkID=157066&quot;&gt;questo indirizzo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Per maggiori informazioni sulle altre tecnologie all'interno del .NET Framework 4.0 si pu&#242; fare riferimento al &lt;a href=&quot;http://www.aspitalia.com/focuson/1126/visual-studio-2010-.net-framework-4.0-beta-data-release.aspx&quot;&gt;nostro speciale&lt;/a&gt;.&lt;/p&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_4.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 4.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET/&quot; rel=&quot;tag&quot;&gt;ASP.NET&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET_4.0/&quot; rel=&quot;tag&quot;&gt;ASP.NET 4.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ASP.NET_MVC/&quot; rel=&quot;tag&quot;&gt;ASP.NET MVC&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) 2010 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco De Sanctis</name></author><category term="ASP.NET"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/cradle/post2553/.NET-Framework-4.0-Beta-2-ASP.NET-MVC-Preview.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2553/.NET-Framework-4.0-Beta-2-ASP.NET-MVC-Preview.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2553.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2553</trackback:ping></entry><entry><title>Nuova versione per EF Mapping Verifier</title><id>http://blogs.aspitalia.com/cradle/post2546/Versione-EF-Mapping-Verifier.aspx</id><updated>2009-09-30T22:46:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2546' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Ho appena messo online una nuova versione per il mio tool di testing del corretto salvataggio delle entities con ADO.NET Entity Framework. Ripeto ancora, a scanso di equivoci, di essermi ispirato ad un&amp;#8217;analoga funzionalit&#224; presente su Fluent NHibernate.&lt;/p&gt;
&lt;p&gt;Come funziona&amp;#8230; Diciamo che avete il vostro modello di dominio, solite robe&amp;#8230; Customers, Orders, ecc.ecc. e volete vedere se effettivamente ci&#242; che salvate e ci&#242; che recuperate sono la stessa cosa. EF MappingVerifier &#232; ci&#242; che fa per voi :D&lt;/p&gt;
&lt;p&gt;Utilizzando delle comodissime e sintetiche lambda expression, &#232; possibile &amp;#8220;valorizzare&amp;#8221; le propriet&#224; desiderate su una entity, poi il mio tool si occuper&#224; di salvarla, ricaricarla e confrontare i risultati.&lt;/p&gt;
&lt;p&gt;Vediamo un po&amp;#8217; nel dettaglio come usarlo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Propriet&#224; scalari di una entity&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La sintassi &#232; molto semplice:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;using (new TransactionScope()) 
    &lt;br /&gt;using (var ctx = new testDbEntities()) 
    &lt;br /&gt;{ 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; VerifyMapping.For&amp;lt;Customer&amp;gt;(ctx) 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .Test(c =&amp;gt; c.Name, &amp;quot;Marco&amp;quot;) 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .Execute(); 
    &lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Notate l&amp;#8217;uso di un TransactionScope che non viene mai committato, in questo modo &#232; possibile far s&#236; che tutti i test siano indipendenti, visto che nulla viene effettivamente memorizzato in maniera permanente sul server.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Complex types&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I complex types non sono molto utilizzati in EF, quantomeno nella prima versione, visto che non sono supportati direttamente dal designer. In ogni modo, &#232; possibile testarli con la sintassi seguente, avendo cura di fornire un IEqualityComparer che sia in grado di verificarne l&amp;#8217;uguaglianza.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;using (new TransactionScope()) 
    &lt;br /&gt;using (var ctx = new testDbEntities()) 
    &lt;br /&gt;{ 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; VerifyMapping.For&amp;lt;Customer&amp;gt;(ctx) 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .Test(c =&amp;gt; c.Name, &amp;quot;Marco&amp;quot;) 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .Test(c =&amp;gt; c.Address, 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; new Address { Via=&amp;quot;Piazza Duomo&amp;quot;, Civico = &amp;quot;15&amp;quot;}, 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IAddressComparer ) 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .Execute(); 
    &lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Relazioni molti-a-uno&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Questo tipo di relazioni sono testabili a patto di aggiungere preventivamente l&amp;#8217;altra entity al context.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;using (new TransactionScope()) 
    &lt;br /&gt;using (var ctx = new testDbEntities()) 
    &lt;br /&gt;{ 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; City city = new City { Name = &amp;quot;Milano&amp;quot; }; 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ctx.AddToCitySet(city); &lt;/p&gt;
&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; VerifyMapping.For&amp;lt;Customer&amp;gt;(ctx) 
  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .Test(c =&amp;gt; c.Name, &amp;quot;Marco&amp;quot;) 
  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .Test(c =&amp;gt; c.City, city ) 
  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .Execute(); 
  &lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Dovrebbe funzionare anche all&amp;#8217;interno di complex types, ma non l&amp;#8217;ho mai provato francamente. Si noti che City deve essere creata separatamente e aggiunta al context.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Relazioni uno-a-molti&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La sintassi &#232; leggermente diversa, nel senso che in questo caso bisogna scrivere una lamdba che simuli l&amp;#8217;aggiunta di dettagli alla collection del parent:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;using (new TransactionScope()) 
    &lt;br /&gt;using (var ctx = new testDbEntities()) 
    &lt;br /&gt;{&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; VerifyMapping.For&amp;lt;Customer&amp;gt;(ctx) 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .Test(c =&amp;gt; c.Name, &amp;quot;Marco&amp;quot;) 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .Test(c =&amp;gt; c.Orders.Add(new Order())) 
    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .Execute(); 
    &lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;La sintassi supporta i metodi Add e AddRange (&#232; previsto anche un extension method per &amp;#8220;aggiungere&amp;#8221; AddRange a IList&amp;lt;T&amp;gt;). Si noti che &#232; anche possibile utilizzare la entity under test nel caso in cui sia necessario referenziarla nel dettaglio, ad es.:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.Test(c =&amp;gt; c.Orders.Add(new Order { Customer = c }))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Il controllo effettuato &#232; squisitamente numerico, nel senso che viene verificato che i dettagli siano dello stesso numero e tipo di quelli impostati nelle lambda. Questo non &#232; un limite, in quanto poi la corretta persistenza di Order va testata con un bel VerifyMapping.For&amp;lt;Order&amp;gt;.&lt;/p&gt;
&lt;p&gt;Un&amp;#8217;ultima nota sulla metodologia utilizzata per lo sviluppo. E&amp;#8217; stato scritto tutto in TDD (il progetto di test &#232; incluso) e c&amp;#8217;&#232; quasi un centinaio di unit test a supporto del codice scritto. Ho &amp;#8220;rispolverato&amp;#8221; il TDD dopo un annetto di tempo e mi diverte sempre un sacco utilizzarlo. Ah.. per gli scettici che pensano sia una perdita di tempo, probabilmente senza TDD a quest&amp;#8217;ora sarei MOLTO indietro.&lt;/p&gt;
&lt;p&gt;Il download lo trovate &lt;a href=&quot;http://lab.aspitalia.com/lab.aspx?ID=62&quot;&gt;qui&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Enjoy&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/Entity_Framework/&quot; rel=&quot;tag&quot;&gt;Entity Framework&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/Object_Oriented_Programming/&quot; rel=&quot;tag&quot;&gt;Object Oriented Programming&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/ADO.NET/&quot; rel=&quot;tag&quot;&gt;ADO.NET&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2010 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco De Sanctis</name></author><category term="ORM"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/cradle/post2546/Versione-EF-Mapping-Verifier.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2546/Versione-EF-Mapping-Verifier.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2546.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2546</trackback:ping></entry><entry><title>Testare il mapping di Entity Framework</title><id>http://blogs.aspitalia.com/cradle/post2540/Testare-Mapping-Entity-Framework.aspx</id><updated>2009-09-17T08:52:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2540' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;
&lt;p&gt;Una delle necessit&#224; pi&#249; sentite quando si lavora con Entity Framework (ma in generale, con qualsiasi ORM) &#232; quella di capire se il mapping, realizzato a manina o tramite il designer, sia scritto correttamente oppure no. Prendendo spunto da ci&#242; che esiste gi&#224; per NHibernate, ma sviluppandolo completamente da zero in TDD, sto lavorando a EF Mapping Verifier, una libreria che consente di testare la corretta persistenza delle entity con una sintassi semplice ed intuitiva: &lt;/p&gt; &lt;p&gt;&lt;code&gt;using(new TransactionScope()) &lt;br /&gt;{ &lt;br /&gt;&amp;#xa0; VerifyMapping.For&lt;customer&gt;(new MyObjectContext()) &lt;br /&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0; .Test(c =&amp;gt; c.Id, 1) &lt;br /&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0; .Test(c =&amp;gt; c.Name, &amp;quot;Marco&amp;quot;) &lt;br /&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0;&amp;#xa0; .Execute(); &lt;br /&gt;}&lt;/customer&gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;Tramite lambda expression, insomma, &#232; possibile impostare i dati voluti sulla entity da testare (in questo caso Customer); VerifyMapping utilizza questi dati per costruire un'istanza di Customer, la salva su database, successivamente la recupera e verifica che i valori delle propriet&#224; corrispondano. Se circondiamo il tutto con un TransactionScope senza invocarne il metodo Complete, i test divengono atomici e indipendenti, dato che non viene mai effettuato il commit della transazione. &lt;/p&gt; &lt;p&gt;Attualmente si tratta di una pre-pre-release, molto limitata, che non gestisce ancora le relazioni tra entity, ad esempio. Ma &#232; un work-in-progress, conto di pubblicare aggiornamenti presto, ed in particolare:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Test delle relazioni 1-to-many e many-to-1 &lt;/li&gt; &lt;li&gt;Supporto a Entity Framework 4.0 &lt;/li&gt; &lt;li&gt;Supporto a entit&#224; POCO &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Il download lo trovate, come al solito, &lt;a href=&quot;http://lab.aspitalia.com/62/tool-testare-mapping-entity-framework.aspx&quot;&gt;nel lab&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Come dice il Mostarda, stay tuned (se avete pazienza!)&lt;/p&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/.NET_Framework_4.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 4.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Entity_Framework/&quot; rel=&quot;tag&quot;&gt;Entity Framework&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2010 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco De Sanctis</name></author><category term="ORM"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/cradle/post2540/Testare-Mapping-Entity-Framework.aspx"/><slash:comments>3</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2540/Testare-Mapping-Entity-Framework.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2540.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2540</trackback:ping></entry><entry><title>Open source = elevata qualit&amp;#224;? Ma dove???</title><id>http://blogs.aspitalia.com/cradle/post2519/Open-Source-Elevata-Qualita-Dove.aspx</id><updated>2009-07-07T09:25:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2519' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Ieri ho avuto la malsana idea di aggiornare Firefox 3.0.x alla versione 3.5 sul mio notebook aziendale. Ero gi&#224; poco contento prima, ora sono a dir poco infuriato e mi accingo a disinstallare questo browser che ho usato (con soddisfazione da un po' di tempo in costante decadimento) fin dalla versione 1.&lt;br /&gt;&lt;br /&gt;Motivo? Il primo avvio di Firefox sulla mia macchina impiega un paio di minuti, e, dando un'occhiata in giro, &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=501605&quot;&gt;mi&lt;/a&gt; &lt;a href=&quot;http://support.mozilla.com/tiki-view_forum_thread.php?locale=de&amp;forumId=1&amp;comments_parentId=381674&quot;&gt;sembra&lt;/a&gt; &lt;a href=&quot;http://support.mozilla.com/tiki-view_forum_thread.php?locale=de&amp;forumId=1&amp;comments_parentId=379577&quot;&gt;proprio&lt;/a&gt; &lt;a href=&quot;http://blog.borngeek.com/2009/07/02/firefox-3-5-slow-to-start/&quot;&gt;di&lt;/a&gt; &lt;a href=&quot;http://www.techimo.com/forum/applications-operating-systems/232601-firefox-3-5-slow-start.html&quot;&gt;non&lt;/a&gt; &lt;a href=&quot;http://forums.mozillazine.org/viewtopic.php?f=38&amp;t=1334895&quot;&gt;essere&lt;/a&gt; l'unico sfigato a cui accade.&lt;br /&gt;&lt;br /&gt;Ora dico io: ma le release, le provano prima di pubblicarle o i problemi li si affronta solo a posteriori? Questa sarebbe la tanto decantata *qualit&#224;* del software open source? Questa &#232; semplicemente una breaking change non sufficientemente testata. Punto. Ma sapete com'&#232;... il rilascio di nuove versioni aumenta i download, i download aumentano gli sponsor, le quote di mercato, chi se ne frega se poi ci sono problemi, tanto il codice &#232; libero, puoi fixarlo anche da solo.&lt;br /&gt;&lt;br /&gt;Peccato che lo stia disinstallando ora, altrimenti al prossimo riavvio, durante i 2 minuti di attesa, mi sarei potuto divertire a immaginare cosa sarebbe accaduto nei vari forum in rete nel caso in cui lo stesso problema lo avesse avuto Internet Explorer.&lt;/p&gt;&lt;p&gt;m.&lt;/p&gt;
&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2010 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco De Sanctis</name></author><category term="Misc"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/cradle/post2519/Open-Source-Elevata-Qualita-Dove.aspx"/><slash:comments>11</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2519/Open-Source-Elevata-Qualita-Dove.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2519.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2519</trackback:ping></entry><entry><title>.NET Framework 4.0 beta 1: Workflow Foundation 4.0</title><id>http://blogs.aspitalia.com/cradle/post2501/.NET-Framework-4.0-Beta-1-Workflow-Foundation-4.0.aspx</id><updated>2009-05-18T20:44:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2501' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;
&lt;p&gt;Il nuovo FX 4.0 porta con s&#233; una vera e propria rivoluzione per quanto riguarda Workflow Foundation: si tratta di un framework nuovo di zecca, sia per quanto riguarda l'engine, che per le librerie e il designer di Visual Studio 2010. Per mantenere la compatibilit&#224; con le applicazioni sviluppate fino ad oggi, si &#232; scelto di utilizzare namespace differenti, cos&#236; che l'utente sia libero di scegliere se avvalersi della nuova tecnologia o continuare ad utilizzare il modello delle versioni 3.x. &lt;/p&gt; &lt;p&gt;Ma quali sono le novit&#224; che possono effettivamente spingerci a voltare pagina? Beh, innanzitutto le performance, che fino a questa edizione hanno rappresentato forse il pi&#249; grande limite di Workflow Foundation. In WF 4.0 sono state apportate numerose ottimizzazioni, sia nell'engine di esecuzione che nei servizi di persistenza (che ora si limitano a persistere solo la parte effettivamente &amp;quot;attiva&amp;quot; del workflow, piuttosto che l'istanza nella sua interezza), che promettono di dare un vero e proprio boost alla scalabilit&#224;, raggiungendo guadagni prestazionali anche di un paio di ordini di grandezza superiori alla versione precedente.&lt;/p&gt; &lt;p&gt;La base activity library annovera alcuni nuovi elementi, quali ad esempio un set di elementi specifici per la gestione di collection di oggetti (ClearCollection, AddToCollection, RemoveFromCollection e ExistsInCollection) o ParallelForEach, che consente di eseguire dei task su elementi di una collection in parallelo; altre invece state completamente riviste: &#232; il caso di Parallel, che ora lavora secondo un nuovo algoritmo di scheduling. E' presente un nuovo modello di workflow, chiamato Flowchart, che sostanzialmente permette di superare il limite imposto dai workflow sequenziali, che non consentivano di rimandare il flusso in una posizione precedente a quella attuale. Esso sopperir&#224; temporaneamente alla mancanza della State Machine, non inclusa nella beta, della quale potr&#224; mimare il comportamento grazie alla PickActivity, sostanzialmente l'alter ego in questa versione della vecchia ListenActivity.&lt;/p&gt; &lt;p&gt;La rivoluzione maggiore riguarda per&#242; l'architettura, a livello di modello a oggetti, di questo nuovo framework, in cui appaiono per la prima volta i concetti di parametri di input e di output o di variabili. I primi vengono utilizzati per rappresentare i flussi di informazione in ingresso e uscita da un'activity (o da un workflow), mentre le altre svolgono funzioni di storage. Il tutto, ovviamente, offre pieno supporto al databinding e consente un approccio pi&#249; marcatamente dichiarativo, e meno funzionale, alla realizzazione del workflow stesso. Visual Studio 2010 offre un designer del tutto nuovo, realizzato in WPF, e che consente la realizzazione di progetti sia graficamente che editando direttamente lo Xaml. Da menzionare il supporto all'intellisense gi&#224; all'interno della property grid, una vera e propria ciliegina sulla torta.&lt;/p&gt; &lt;p&gt;L'ultimo aspetto da citare riguarda l'integrazione con WCF, che in Workflow Foundation 4.0 si spinge oltre quanto gi&#224; visto nel Framework 3.5. Grazie a WCF, infatti, sar&#224; possibile fornire ai workflow la possibilit&#224; di accettare messaggi remoti, costruendo quindi veri e propri servizi in maniera dichiarativa tramite l'uso di activity.&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=&quot;http://netfx4.winfxitalia.com/&quot;&gt;.NET Framework 4.0&lt;/a&gt;.&lt;/p&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_4.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 4.0&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_Workflow_Foundation/&quot; rel=&quot;tag&quot;&gt;Windows Workflow Foundation&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2010 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco De Sanctis</name></author><category term="Misc"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/cradle/post2501/.NET-Framework-4.0-Beta-1-Workflow-Foundation-4.0.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2501/.NET-Framework-4.0-Beta-1-Workflow-Foundation-4.0.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2501.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2501</trackback:ping></entry><entry><title>Visto che ultimamente Reflection.Emit &amp;#232; di moda...</title><id>http://blogs.aspitalia.com/cradle/post2490/Visto-Ultimamente-Reflection.Emit-Moda.aspx</id><updated>2009-04-30T07:58:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2490' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;... e visto che non tutti masticano benissimo MSIL (io ad esempio no!), vi segnalo un simpaticissimo addin per Reflector che credo far&#224; felici molti estimatori del codice dinamico:&lt;/p&gt;
&lt;p&gt;&lt;a title=&quot;http://reflectoraddins.codeplex.com/Wiki/View.aspx?title=ReflectionEmitLanguage&quot; href=&quot;http://reflectoraddins.codeplex.com/Wiki/View.aspx?title=ReflectionEmitLanguage&quot;&gt;http://reflectoraddins.codeplex.com/Wiki/View.aspx?title=ReflectionEmitLanguage&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Leggo testualmente:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;This add-in translates the IL code of a given method into the C# code that would be needed to generate the same IL code using System.Reflection.Emit&quot;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Buon divertimento ;-)&lt;/p&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_2.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 2.0&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/.NET_Framework_4.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 4.0&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2010 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco De Sanctis</name></author><category term="Misc"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/cradle/post2490/Visto-Ultimamente-Reflection.Emit-Moda.aspx"/><slash:comments>2</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2490/Visto-Ultimamente-Reflection.Emit-Moda.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2490.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2490</trackback:ping></entry><entry><title>Basta! Italia 2009 - I'll be there!</title><id>http://blogs.aspitalia.com/cradle/post2471/Basta-Italia-2009-Ill-BE-There.aspx</id><updated>2009-03-13T16:01:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2471' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Luned&#236; 16 sar&#242;, insieme a qualche altro membro dello staff di Aspitalia, a Roma in occasione della prima edizione italiana di &lt;a href=&quot;http://www.bastaitalia.it/&quot;&gt;BASTA!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Se, come per il sottoscritto, .NET &#232; il vostro pane quotidiano e la vostra passione, vi consiglio tantissimo di partecipare. &lt;/p&gt;
&lt;p&gt;In serata, &lt;a href=&quot;http://www.aspitalia.com/eventi/16/Community-Champion-BastaItalia-2009-Roma.aspx&quot;&gt;all'interno dello spazio riservato alle community&lt;/a&gt;, terr&#242; una sessione a proposito di come approcciare l'architettura delle applicazioni quando si sceglie di avvalersi di ORM. Oramai sono un po' di anni che lavoro con questo genere di framework e ho provato a condensare in un'oretta quelle dritte che ritengo un po' pi&#249; utili e interessanti per sfruttare a meglio l'NHibernate o ADO.NET Entity Framework di turno. Se vi interessa e avete tempo, provate a fare una capatina.. ;-)&lt;/p&gt;
&lt;p&gt;Che dire... ci vediamo l&#236;!&lt;/p&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/ASP.NET/&quot; rel=&quot;tag&quot;&gt;ASP.NET&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/Entity_Framework/&quot; rel=&quot;tag&quot;&gt;Entity Framework&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) 2010 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco De Sanctis</name></author><category term="ORM"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/cradle/post2471/Basta-Italia-2009-Ill-BE-There.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2471/Basta-Italia-2009-Ill-BE-There.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2471.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2471</trackback:ping></entry><entry><title>Gli ORM e la many to one: 3 approcci differenti</title><id>http://blogs.aspitalia.com/cradle/post2452/ORM-Many-One-Approcci-Differenti.aspx</id><updated>2009-01-13T17:01:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2452' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Un paio di giorni fa ho ricevuto una domanda in mail da un lettore circa l'approccio da utilizzare quando si gestiscono le lookup in un Domain Model. Supponiamo di avere la classica relazione tra Order e Customer. La domanda era pi&#249; o meno cos&#236;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Nella form di creazione ordini, ho una DropDownList con l'elenco dei clienti; ovviamente questa mi restituisce solo l'Id di quello selezionato, mentre per costruire correttamente la mia classe Order avrei bisogno dell'intera istanza. Possibile che sia pertanto vincolato ad effettuare una query, sebbene a me, alla fine della solfa, serva solo l'Id?&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;E' un tipico caso di impedence mismatch tra mondo relazionale e Domain Model, ed &#232; questo il motivo per cui la soluzione &#232; strettamente legata all'ORM utilizzato. Vediamo quali sono state le scelte e soprattutto quali sono le differenze tra i 3 ORM pi&#249; &quot;in voga&quot; del momento, ossia Linq To SQL, NHibernate e Entity Framework.&lt;/p&gt;
&lt;h2&gt;Linq To SQL&lt;/h2&gt;
&lt;p&gt;Il primo ORM made in Microsoft utilizza un approccio molto semplice per risolvere il problema. La classe Order prodotta dal designer, infatti, possiede sia la reference al Customer corrispondente, sia la propriet&#224; CustomerID, che pu&#242; essere valorizzata direttamente. Il codice pertanto &#232; estremamente immediato e rispecchia in pieno la natura magari &quot;meno rigorosa&quot;, ma sicuramente con un gradino d'apprendimento estremamente smussato, di Linq To SQL:&lt;/p&gt;
&lt;code&gt;&lt;p&gt;Order order = new Order();&lt;br&gt;order.Description = &quot;New order&quot;;&lt;br&gt;order.CustomerId = ddlCustomers.SelectedValue; 
&lt;p&gt;ctx.Orders.InsertOnSubmit(order);&lt;br&gt;ctx.SubmitChanges();&lt;/p&gt;&lt;/code&gt;
&lt;h2&gt;NHibernate&lt;/h2&gt;
&lt;p&gt;La scelta implementativa di Linq To SQL presenta per&#242; un problema: l'istanza di Order non &#232; collegata ad un *vero* customer, &#232; stato fornito un semplice identificativo e, finch&#233; non si procede al salvataggio (e quindi alla rilettura dell'order), Order.Customer vale null. Ovviamente quindi uno statement tipo&lt;/p&gt;
&lt;code&gt;&lt;p&gt;Console.Writeline(Order.Customer.Name)&lt;/p&gt;&lt;/code&gt;
&lt;p&gt;solleverebbe una NullReferenceException.&lt;/p&gt;
&lt;p&gt;NHibernate &#232; invece pi&#249; rigoroso e non consente di &quot;aggirare&quot; la specifica della reference fornendo solo un identificativo, ma ha bisogno di un'istanza di Customer. Quindi strada obbligata verso la inutile query? La risposta fortunatamente &#232; no, o almeno &#232; no se &#232; stato attivato il lazy load per la classe Customer nel relativo mapping:&lt;/p&gt;
&lt;code&gt;&lt;p&gt;&amp;lt;class name=&quot;...&quot; lazy=&quot;true&quot;&amp;gt;&lt;br&gt;....&lt;br&gt;&amp;lt;/class&amp;gt;&lt;/p&gt;&lt;/code&gt;
&lt;p&gt;Il codice della nostra form di gestione ordini diventa qualcosa tipo&lt;/p&gt;
&lt;code&gt;&lt;p&gt;Order order = new Order();&lt;br&gt;order.Description = &quot;New order&quot;;&lt;br&gt;order.Customer = session.Load&amp;lt;Customer&amp;gt;(ddlCustomers.SelectedValue);&lt;/p&gt;
&lt;p&gt;session.SaveOrUpdate(order);&lt;br&gt;session.Flush();&lt;/p&gt;&lt;/code&gt;
&lt;p&gt;In caso di lazy load attivo, session.Load&amp;lt;Customer&amp;gt; non effettua alcuna query verso il DB, ma restituisce un proxy di Customer, ossia una classe generata dinamicamente, che eredita da Customer, perfettamente valida nel caso di assegnazione alla propriet&#224; Order.Customer.&lt;/p&gt;
&lt;p&gt;Il vantaggio di questo approccio &#232; che, in qualsiasi momento proviamo ad eseguire&lt;/p&gt;
&lt;code&gt;&lt;p&gt;Console.Writeline(Order.Customer.Name)&lt;/p&gt;&lt;/code&gt;
&lt;p&gt;NHibernate in maniera del tutto trasparente si connette al database, carica l'istanza del cliente e ne stampa a video il nome. Il tutto si paga per&#242; con una complessit&#224; architetturale maggiore (session attiva in ogni momento, necessit&#224; di gestire i casi di errore nel caricamento dati, ecc.).&lt;/p&gt;
&lt;h2&gt;Entity Framework&lt;/h2&gt;
&lt;p&gt;Entity Framework, come accade in diversi altri frangenti, &#232; invece meno &quot;automatico&quot; e ci&#242;, se da un lato obbliga l'utente ad un maggior intervento nell'utilizzo (basta pensare a come &#232; gestito il caricamento delle relazioni), dall'altro consente in qualche modo dei workaround per gestire situazioni per le quali non &#232; presente un'implementazione specifica, come questo caso. &lt;/p&gt;
&lt;p&gt;Entity Framework richiede infatti che la relazione sia rappresentata con un'istanza di un customer, ma non &#232; necessario recuperarlo dal database, a patto di popolarne correttamente la propriet&#224; EntityKey (grazie a &lt;a href=&quot;http://blogs.aspitalia.com/SM15455/&quot;&gt;Stefano&lt;/a&gt; per la dritta!!):&lt;/p&gt;
&lt;code&gt;&lt;p&gt;Order o = new Order();&lt;br&gt;o.Description = &quot;New order&quot;; 
&lt;p&gt;// creo il customer &quot;fittizio&quot;&lt;br&gt;Customer customer = new Customer();&lt;br&gt;customer.Id = 1;&lt;br&gt;customer.EntityKey = new EntityKey();&lt;br&gt;customer.EntityKey.EntitySetName = &quot;CustomerSet&quot;;&lt;br&gt;customer.EntityKey.EntityKeyValues = new[] { new EntityKeyMember(&quot;Id&quot;, ddlCustomers.SelectedValue) };&lt;br&gt;customer.EntityKey.EntityContainerName = &quot;testdbEntities&quot;;&lt;br&gt;// aggancio il customer all'ObjectContext&lt;br&gt;ctx.Attach(customer); 
&lt;p&gt;// aggiorno la relazione e salvo l'ordine&lt;br&gt;o.Customer = customer;&lt;br&gt;ctx.AddToOrderSet(o); 
&lt;p&gt;ctx.SaveChanges(); &lt;/p&gt;&lt;/code&gt;
&lt;p&gt;Ovviamente in questo caso, il cliente non &#232; valorizzato, e se si prova ad accedere al nome si ottiene un bel null, anche se non viene sollevato alcun errore. Un'ultima nota: attenzione a rispettare l'ordine dei passaggi, ed in particolare ad agganciare il customer al context &lt;strong&gt;prima&lt;/strong&gt; di associarlo all'ordine, altrimenti non funziona pi&#249; nulla. 
&lt;p&gt;Ciao ;-)&lt;/p&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/Entity_Framework/&quot; rel=&quot;tag&quot;&gt;Entity Framework&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/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) 2010 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco De Sanctis</name></author><category term="ORM"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/cradle/post2452/ORM-Many-One-Approcci-Differenti.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2452/ORM-Many-One-Approcci-Differenti.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2452.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2452</trackback:ping></entry><entry><title>ILDASM e ILASM: un esempio pratico (e c'entra anche NHibernate)</title><id>http://blogs.aspitalia.com/cradle/post2451/ILDASM-ILASM-Esempio-Pratico-E-Centra-NHibernate.aspx</id><updated>2009-01-12T13:18:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2451' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;
&lt;p&gt;Accadde un giorno che avevo un piccolo (e vecchio) CMS con un bug da fixare e ho avuto l'idea di aggiornare il motore di persistenza, che usava NH 1.2.0 alla nuovissima 2.0.1. Scarico quindi i due progetti NHibernate.Core e NHibernate.Caches ma... niente! Quest'ultima non ne voleva sapere di andare a causa di una reference verso la versione 2.0.0 di NHibernate che purtroppo non era pi&#249; disponibile per il download.&lt;/p&gt;
&lt;p&gt;Premetto che &lt;strong&gt;ad oggi il problema &#232; stato risolto, ora NHibernate.Caches punta alla versione corretta&lt;/strong&gt;, ma in quel frangente mi sono trovato abbastanza spaesato. Le possibili soluzioni erano:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ricompilare tutto NHibernate, modificando il numero di versione a 2.0.0, ma non mi piaceva l'idea&lt;/li&gt;
&lt;li&gt;Scaricare i sorgenti della Cache e modificare la reference, ma questi non erano disponibili se non come trunk SVN, e avrei in questo modo rischiato di portare in produzione codice non ancora ufficialmente rilasciato&lt;/li&gt;
&lt;li&gt;Utilizzare &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/2fc472t2.aspx&quot;&gt;l'Assembly Binding Redirection&lt;/a&gt; del CLR&lt;/li&gt;
&lt;li&gt;Disassemblare l'assembly NHibernate.Caches e modificare la reference per farlo puntare a NH 2.0.1&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;A dispetto delle apparenze, la soluzione 4 &#232; in assoluto la pi&#249; veloce e semplice e infatti &#232; proprio quella che ho scelto.&lt;/p&gt;
&lt;p&gt;I passi sono estremamente banali:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Si apre l'assembly con ILDASM&lt;/li&gt;
&lt;li&gt;Si seleziona File -&amp;gt; Dump, avendo cura di impostare a checked tutte le checkbox proposte&lt;/li&gt;
&lt;li&gt;A questo punto basta aprire il file .IL generato con un qualsiasi editor testuale e cercare &amp;quot;.assembly extern&amp;quot; per posizionarsi nella sezione del MSIL che contiene l'indicazione delle reference&lt;/li&gt;
&lt;li&gt;Modificare manualmente la reference alla versione voluta e salvare&lt;/li&gt;
&lt;li&gt;Ricompilare il file IL con l'istruzione a riga di comando: &lt;/li&gt;&lt;/ol&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;ILASM nomeFileMSIL.IL /DLL /OUTPUT=nomeAssembly.dll&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Et voil&#224;, it works!&lt;/p&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/NHibernate/&quot; rel=&quot;tag&quot;&gt;NHibernate&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2010 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco De Sanctis</name></author><category term="Misc"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/cradle/post2451/ILDASM-ILASM-Esempio-Pratico-E-Centra-NHibernate.aspx"/><slash:comments>1</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2451/ILDASM-ILASM-Esempio-Pratico-E-Centra-NHibernate.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2451.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2451</trackback:ping></entry><entry><title>Alcune info per chi usa NHibernate</title><id>http://blogs.aspitalia.com/cradle/post2400/Info-Usa-NHibernate.aspx</id><updated>2008-10-04T19:39:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2400' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;
&lt;p&gt;Da qualche settimana, il sito ufficiale di NHibernate non &#232; pi&#249; il vecchio &lt;a href=&quot;http://www.nhibernate.org&quot;&gt;www.nhibernate.org&lt;/a&gt;, bens&#236; &lt;a href=&quot;http://www.nhforge.org/&quot;&gt;NHForge&lt;/a&gt;, dove potrete trovare info, aggiornamenti, downloads, documentazione, blogs, ecc.ecc.&lt;/p&gt;
&lt;p&gt;L'unica cosa che &lt;strong&gt;*non c'&#232;*&lt;/strong&gt; &#232; il forum e il motivo &#232; molto semplice: per chiedere aiuto o sottoporre dubbi esiste &lt;a href=&quot;http://groups.google.com/group/nh-it&quot;&gt;NHibernate-It&lt;/a&gt;, il Google group ufficiale italiano, o &lt;a href=&quot;http://groups.google.com/group/nhusers&quot;&gt;nhusers&lt;/a&gt;, che invece &#232; internazionale.&lt;/p&gt;
&lt;p&gt;Proprio a proposito di ci&#242;, nel caso vi sorgesse il dubbio di esservi imbattuti in un bug, vi invito a leggere &lt;a href=&quot;http://www.nhforge.org/blogs/nhibernate/archive/2008/10/04/the-best-way-to-solve-nhibernate-bugs-submit-good-unit-test.aspx&quot;&gt;questo post in inglese&lt;/a&gt; che ho pubblicato proprio oggi sulle modalit&#224; pi&#249; snelle per comunicarne i dettagli e facilitare il compito di chi vorr&#224; darvi una mano: realizzare uno unit test che riproduca il problema. Pensateci, anche se non usate NH, ogni volta vi trovate a chiedere assistenza in qualche forum...&lt;/p&gt;
&lt;p&gt;Ah, a proposito... siamo arrivati alla &lt;a href=&quot;http://www.nhforge.org/media/p/4.aspx&quot;&gt;versione 2.0.1&lt;/a&gt;.. scaricate, scaricate e scaricate!!&lt;/p&gt;
&lt;p&gt;Ciao!&lt;/p&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) 2010 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco De Sanctis</name></author><category term="ORM"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/cradle/post2400/Info-Usa-NHibernate.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2400/Info-Usa-NHibernate.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2400.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2400</trackback:ping></entry><entry><title>Annunciazione, annunciazione!</title><id>http://blogs.aspitalia.com/cradle/post2397/Annunciazione-Annunciazione.aspx</id><updated>2008-10-01T23:43:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2397' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Oggi &lt;a href=&quot;http://blogs.aspitalia.com/daniele/&quot;&gt;Daniele&lt;/a&gt; ha annunciato &lt;a href=&quot;http://www.aspitalia.com/focuson/1062/Speciale-.NET-Framework-3.5-SP1.aspx&quot;&gt;il nuovo speciale sul SP1&lt;/a&gt; che, tra le altre cose, vedr&#224; la pubblicazione anche di un mio script; beh.. la cosa ha per me un sapore davvero particolare, dato che &#232; il primo contributo che scrivo da membro dello staff di &lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;Aspitalia&lt;/a&gt;, visto che i ragazzi hanno avuto la folle idea di accettare uno come me nella famigghia!&lt;/p&gt;

&lt;p&gt;La cosa ha avuto subito un risvolto positivo, per&#242;: il &lt;a href=&quot;http://www.gazzetta.it/speciali/2008/calcio/SerieA/matchsheet_c19_m399685.shtml&quot;&gt;Milan ha vinto il derby&lt;/a&gt;, &lt;a href=&quot;http://www.gazzetta.it/Calcio/SerieA/Squadre/Inter/Primo_Piano/2008/10/01/partitainterwerder.shtml&quot;&gt;l'Inter ha pareggiato in champions&lt;/a&gt; e Mourinho ha fatto &lt;a href=&quot;http://mediacenter.gazzetta.it/MediaCenter/action/player?idCanale=UltimeNotizie&amp;amp;filtro=Tutti&amp;amp;pagina=1&amp;amp;passo=7&amp;amp;uuid=144380b0-8f1d-11dd-9f3c-00144f02aabc&amp;amp;navName=1&amp;amp;provenienza=REDAZIONE&quot;&gt;una delle pi&#249; belle conferenze stampa&lt;/a&gt; degli ultimi tempi.&lt;/p&gt;

&lt;p&gt;Speriamo che continui tutto cos&#236;, l'inizio promette bene!!&lt;/p&gt;

&lt;p&gt;Ciao!&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&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/Off_Topic/&quot; rel=&quot;tag&quot;&gt;Off Topic&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2010 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco De Sanctis</name></author><category term="Off Topic"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/cradle/post2397/Annunciazione-Annunciazione.aspx"/><slash:comments>6</slash:comments><wfw:comment>http://blogs.aspitalia.com/cradle/post2397/Annunciazione-Annunciazione.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/cradle/CommentRSS2397.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2397</trackback:ping></entry></feed>