Alessandro Sorcinelli - SharePoint e .NET http://blogs.ugidotnet.org/alessandro_sorcinelli/Default.aspx ASP.NET, C#, SharePoint, varie ed eventuali it-IT Alessandro Sorcinelli Subtext Version 2.6.0.0 Alessandro Sorcinelli - SharePoint e .NET http://blogs.ugidotnet.org/images/RSS2Image.gif http://blogs.ugidotnet.org/alessandro_sorcinelli/Default.aspx 77 60 Applicazioni ASP.NET e Tablet: supportarli o non supportarli? ASP.NET e AJAX Programmazione Web http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2013/01/22/applicazioni-asp.net-e-tablet-supportarli-o-non-supportarli.aspx <p><font face="Arial">Dovendo riprogettare un’applicazione ASP.NET e potendo adottare un nuovo stile grafico, è opportuno o meno sviluppare tenendo in mente il fatto che tale applicazione possa essere usata nei Tablet?</font></p> <p><font face="Arial">Chiaramente la possibilità di utilizzo sui Tablet non è un’ipotesi o una “fissa mentale”, ma è frutto di richieste di clienti già arrivate da più parti. Detto questo e avendo i soliti problemi di tempo/budget personalmente vedo due strade:</font></p> <ul> <li>Sviluppare un’applicazione web nello stile Hotmail o Gmail progettando bene i controlli e il layout affinché sia tutto utilizzabile decentemente sia sui desktop “classici” sia sui Tablet (bottoni grandi, textbox, combo dimensionate in un certo modo, evitare,  dove possibile, l’uso di dialog e popup e così via)</li> <li> Sviluppare un’applicazione web “classica” ed eventualmente un client specifico per ogni tipo di dispositivo supportato (Windows, IOS, Android, etc..)</li> </ul> A budget infinito sicuramente la seconda strada darebbe all’utente una user experience migliore, ma chiaramente non mi trovo con questa possibilità, tutt’altro. Va detto anche che mancherebbero competenze specifiche sia nello sviluppo in ambienti Apple sia in quelli Android. Della prima via quello che mi lascia un po’ perplesso sono eventuali compromessi da utilizzare, anche se sia Hotmail sia Gmail mi sembrano degli ottimi esempi a livello di usabilità. <p><font face="Arial">Cosa ne pensate? Cosa fareste nei miei panni? </font></p><img src="http://blogs.ugidotnet.org/alessandro_sorcinelli/aggbug/101404.aspx" width="1" height="1" /> Alessandro Sorcinelli http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2013/01/22/applicazioni-asp.net-e-tablet-supportarli-o-non-supportarli.aspx Tue, 22 Jan 2013 13:43:37 GMT http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2013/01/22/applicazioni-asp.net-e-tablet-supportarli-o-non-supportarli.aspx#feedback 1 http://blogs.ugidotnet.org/alessandro_sorcinelli/comments/commentRss/101404.aspx http://blogs.ugidotnet.org/alessandro_sorcinelli/services/trackbacks/101404.aspx Visual Studio 2012: problema esecuzione Unit Tests da un progetto migrato Visual Studio e .NET http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2012/10/01/visual-studio-2012-problema-esecuzione-unit-tests-da-un-progetto.aspx <p>Sto iniziando ad usare Visual Studio 2012 per i miei vecchi progetti, sfruttando la possibilità di aprirli sia con il nuovo Visual Studio sia con il “vecchio” 2010. <br /> Di solito la “conversione” procede senza intoppi e senza problemi in fase di esecuzione. Nell’ultima solution convertita ho invece notato un piccolo problema: i test presenti in un paio di Test Project (Microsoft Test) fallivano tutti, uno dopo l’altro. <br /> Guardando l’output dei vari test mi sono accorto che il problema era dovuto al fatto che i file da copiare nella directory di output (in primis la configurazione di NHibernate) non venivano più copiati, nonostante i settings fossero presenti e corretti. La soluzione è stata abbastanza semplice: ho creato un nuovo file di settings, esattamente uguale al precedente, e utilizzando questo nuovo file i problemi sono spariti e tutto è tornato a funzionare alla perfezione.</p><img src="http://blogs.ugidotnet.org/alessandro_sorcinelli/aggbug/101244.aspx" width="1" height="1" /> Alessandro Sorcinelli http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2012/10/01/visual-studio-2012-problema-esecuzione-unit-tests-da-un-progetto.aspx Mon, 01 Oct 2012 15:37:58 GMT http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2012/10/01/visual-studio-2012-problema-esecuzione-unit-tests-da-un-progetto.aspx#feedback http://blogs.ugidotnet.org/alessandro_sorcinelli/comments/commentRss/101244.aspx http://blogs.ugidotnet.org/alessandro_sorcinelli/services/trackbacks/101244.aspx Eseguire un assembly in un AppDomain separato Visual Studio e .NET http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2011/12/02/eseguire-un-assembly-in-un-appdomain-separato.aspx <p> Nello sviluppo di architetture a plugin può diventare necessario eseguire assembly in un AppDomain separato, magari recuperando gli assembly (con relative dipedenze) da una sottocartella. <br /> In rete si trovano tantissimi esempi, che usano metodi recenti o datati e che sfruttano varie tecniche. Sono però riuscito ad arrivare ad una soluzione che mi soddisfacesse, solo dopo molti tentativi e molte ricerche e quindi mi sembra giusto condividere i risultati della mia ricerca sperando che possano facilitare la vita a qualcuno.</p> <p>Prima di andare avanti vorrei però esplicitare le mie necessità:</p> <p>- Eseguire i metodi di una o più classi contenute all’interno di un assembly, in un AppDomain separato; <br /> - Poter caricare nell’AppDomain assembly con reference ad altri assembly “locali” o memorizzati nella GAC;  <br /> - Memorizzare l’assembly (con tutte le sue dipendenze) in una sotto directory; <br /> - Poter passare parametri al costruttore delle classi da creare. <br />   <br /> La funzione seguente, seppur molto semplice, soddisfa tutte le mie necessità:</p> <div id="codeSnippetWrapper" style="margin: 20px 0px 10px; padding: 4px; border: 1px solid silver; width: 97.5%; height: 395px; text-align: left; line-height: 12pt; overflow: auto; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; cursor: text; direction: ltr; background-color: rgb(244, 244, 244);"> <div id="codeSnippet" style="padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span id="lnum1" style="color: rgb(96, 96, 96);"> 1:</span> <span style="color: rgb(0, 0, 255);">Public</span> <span style="color: rgb(0, 0, 255);">Sub</span> ExecuteOnAppDomain(<span style="color: rgb(0, 0, 255);">ByVal</span> typeName <span style="color: rgb(0, 0, 255);">As</span> <span style="color: rgb(0, 0, 255);">String</span>, <span style="color: rgb(0, 0, 255);">ByVal</span> assemblyName <span style="color: rgb(0, 0, 255);">As</span> <span style="color: rgb(0, 0, 255);">String</span>)</pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span id="lnum2" style="color: rgb(96, 96, 96);"> 2:</span> <span style="color: rgb(0, 0, 255);">Dim</span> domainSetup <span style="color: rgb(0, 0, 255);">As</span> AppDomainSetup = <span style="color: rgb(0, 0, 255);">New</span> AppDomainSetup</pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span id="lnum3" style="color: rgb(96, 96, 96);"> 3:</span> domainSetup.ApplicationBase = Environment.CurrentDirectory</pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span id="lnum4" style="color: rgb(96, 96, 96);"> 4:</span> domainSetup.PrivateBinPath = <span style="color: rgb(0, 96, 128);">"RELATIVE_FOLDER"</span></pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span id="lnum5" style="color: rgb(96, 96, 96);"> 5:</span> <span style="color: rgb(0, 128, 0);">' Copia delle policy dall'appdomain corrente</span></pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span id="lnum6" style="color: rgb(96, 96, 96);"> 6:</span> <span style="color: rgb(0, 0, 255);">Dim</span> adevidence <span style="color: rgb(0, 0, 255);">As</span> Evidence = AppDomain.CurrentDomain.Evidence</pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span id="lnum7" style="color: rgb(96, 96, 96);"> 7:</span> <span style="color: rgb(0, 128, 0);">' Creazione nuovo appdomain</span></pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span id="lnum8" style="color: rgb(96, 96, 96);"> 8:</span> <span style="color: rgb(0, 0, 255);">Dim</span> domain <span style="color: rgb(0, 0, 255);">As</span> AppDomain = AppDomain.CreateDomain(<span style="color: rgb(0, 96, 128);">"SomeAppDomain"</span>, adevidence, domainSetup)</pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span id="lnum9" style="color: rgb(96, 96, 96);"> 9:</span>  </pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span id="lnum10" style="color: rgb(96, 96, 96);"> 10:</span> <span style="color: rgb(0, 128, 0);">' Argomenti costruttore</span></pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span id="lnum11" style="color: rgb(96, 96, 96);"> 11:</span> <span style="color: rgb(0, 0, 255);">Dim</span> constructorArgs <span style="color: rgb(0, 0, 255);">As</span> <span style="color: rgb(0, 0, 255);">New</span> List(Of <span style="color: rgb(0, 0, 255);">Object</span>)</pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span id="lnum12" style="color: rgb(96, 96, 96);"> 12:</span> constructorArgs.Add(<span style="color: rgb(0, 96, 128);">"PARAM1"</span>)</pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span id="lnum13" style="color: rgb(96, 96, 96);"> 13:</span> <span style="color: rgb(0, 128, 0);">' ....</span></pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span id="lnum14" style="color: rgb(96, 96, 96);"> 14:</span> <span style="color: rgb(0, 128, 0);">' ....</span></pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span id="lnum15" style="color: rgb(96, 96, 96);"> 15:</span> constructorArgs.Add(10)</pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span id="lnum16" style="color: rgb(96, 96, 96);"> 16:</span> <span style="color: rgb(0, 128, 0);">' Bindings</span></pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span id="lnum17" style="color: rgb(96, 96, 96);"> 17:</span> <span style="color: rgb(0, 0, 255);">Dim</span> bindings = BindingFlags.CreateInstance <span style="color: rgb(0, 0, 255);">Or</span> BindingFlags.Instance <span style="color: rgb(0, 0, 255);">Or</span> BindingFlags.<span style="color: rgb(0, 0, 255);">Public</span></pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span id="lnum18" style="color: rgb(96, 96, 96);"> 18:</span> <span style="color: rgb(0, 128, 0);">' Creazione della classe dato il nome completo e l'assembly di riferimento</span></pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span id="lnum19" style="color: rgb(96, 96, 96);"> 19:</span> <span style="color: rgb(0, 0, 255);">Dim</span> obj = domain.CreateInstanceAndUnwrap(assemblyName, typeName, <span style="color: rgb(0, 0, 255);">False</span>, bindings, <span style="color: rgb(0, 0, 255);">Nothing</span>,</pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span id="lnum20" style="color: rgb(96, 96, 96);"> 20:</span> constructorArgs.ToArray, <span style="color: rgb(0, 0, 255);">Nothing</span>, <span style="color: rgb(0, 0, 255);">Nothing</span>, <span style="color: rgb(0, 0, 255);">Nothing</span>)</pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span id="lnum21" style="color: rgb(96, 96, 96);"> 21:</span> obj.DoWork()</pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span id="lnum22" style="color: rgb(96, 96, 96);"> 22:</span> <span style="color: rgb(0, 128, 0);">' Unload dell'appdomain</span></pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: white;"><span id="lnum23" style="color: rgb(96, 96, 96);"> 23:</span> AppDomain.Unload(domain)</pre> <!--CRLF--> <pre style="margin: 0em; padding: 0px; width: 100%; text-align: left; color: black; line-height: 12pt; overflow: visible; font-family: &quot;Courier New&quot;, courier, monospace; font-size: 8pt; direction: ltr; background-color: rgb(244, 244, 244);"><span id="lnum24" style="color: rgb(96, 96, 96);"> 24:</span> <span style="color: rgb(0, 0, 255);">End</span> Sub</pre> <!--CRLF--></div> </div> <p> <br /> Alcune note: <br /> <br /> - Nella proprietà PrivateBinPath dell’AppDomainSetup è possibile specificare le sottodirectory da utilizzare per il probing degli assembly; <br /> - I parametri del costruttore devono essere specificati nello stesso ordine e devono avere lo stesso tipo di quelli presenti nel costruttore della classe da istanziare; <br /> - L’assembly name non deve contenere il suffisso “.dll” ma solo il nome dell’assembly; <br /> - Il typeName deve contenere il nome completo del tipo della classe da istanziare; <br /> - Tutti gli assembly referenziati devono essere inseriti nelle sottodirectory o nella directory principale del nostro applicativo (o nella GAC); <br /> - La risoluzione delle dipendenze viene fatta in automatico senza dover implementare nessun meccanismo manuale di risoluzione.</p><img src="http://blogs.ugidotnet.org/alessandro_sorcinelli/aggbug/100593.aspx" width="1" height="1" /> Alessandro Sorcinelli http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2011/12/02/eseguire-un-assembly-in-un-appdomain-separato.aspx Fri, 02 Dec 2011 12:16:09 GMT http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2011/12/02/eseguire-un-assembly-in-un-appdomain-separato.aspx#feedback http://blogs.ugidotnet.org/alessandro_sorcinelli/comments/commentRss/100593.aspx http://blogs.ugidotnet.org/alessandro_sorcinelli/services/trackbacks/100593.aspx NHibernate: utilizzare lo 0 per rappresentare l&rsquo;assenza di entit&agrave; NHibernate http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2011/02/22/nhibernate-utilizzare-lo-0-per-rappresentare-lrsquoassenza-di-entitagrave.aspx <p><br /> Quando si ha a che fare con database legacy, potrebbe saltar fuori la necessità di non inserire nel database valori nulli per le relazioni many-to-one nulle, ma bensì il valore zero.</p> <p>Questo <a target="_blank" href="http://nhforge.org/blogs/nhibernate/archive/2011/01/28/how-to-use-0-instead-of-null-for-foreign-keys.aspx">post</a> su NHForge, discute la problematica e definisce una soluzione. Per chi avesse bisogno della versione in VB.NET ecco il codice convertito:</p> <div style="BORDER-BOTTOM: silver 1px solid; TEXT-ALIGN: left; BORDER-LEFT: silver 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; FONT-SIZE: 8pt; OVERFLOW: hidden; BORDER-TOP: silver 1px solid; CURSOR: text; BORDER-RIGHT: silver 1px solid; PADDING-TOP: 4px" id="codeSnippetWrapper"> <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum1"> 1:</span> <span style="COLOR: #0000ff">Public</span> <span style="COLOR: #0000ff">Class</span> NullableTuplizer</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum2"> 2:</span> <span style="COLOR: #0000ff">Inherits</span> PocoEntityTuplizer</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum3"> 3:</span>  </pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum4"> 4:</span> <span style="COLOR: #0000ff">Sub</span> <span style="COLOR: #0000ff">New</span>(<span style="COLOR: #0000ff">ByVal</span> entityMetamodel <span style="COLOR: #0000ff">As</span> EntityMetamodel, <span style="COLOR: #0000ff">ByVal</span> mappedEntity <span style="COLOR: #0000ff">As</span> PersistentClass)</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum5"> 5:</span> <span style="COLOR: #0000ff">MyBase</span>.<span style="COLOR: #0000ff">New</span>(entityMetamodel, mappedEntity)</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum6"> 6:</span> <span style="COLOR: #0000ff">End</span> <span style="COLOR: #0000ff">Sub</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum7"> 7:</span>  </pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum8"> 8:</span> <span style="COLOR: #0000ff">Public</span> <span style="COLOR: #0000ff">Overrides</span> <span style="COLOR: #0000ff">Function</span> GetPropertyValuesToInsert(<span style="COLOR: #0000ff">ByVal</span> entity <span style="COLOR: #0000ff">As</span> <span style="COLOR: #0000ff">Object</span>, <span style="COLOR: #0000ff">ByVal</span> mergeMap <span style="COLOR: #0000ff">As</span> IDictionary,</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum9"> 9:</span> <span style="COLOR: #0000ff">ByVal</span> session <span style="COLOR: #0000ff">As</span> NHibernate.Engine.ISessionImplementor) <span style="COLOR: #0000ff">As</span> <span style="COLOR: #0000ff">Object</span>()</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum10"> 10:</span> <span style="COLOR: #0000ff">Dim</span> values() <span style="COLOR: #0000ff">As</span> <span style="COLOR: #0000ff">Object</span> = <span style="COLOR: #0000ff">MyBase</span>.GetPropertyValuesToInsert(entity, mergeMap, session)</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum11"> 11:</span> <span style="COLOR: #008000">' Dirty hack 1</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum12"> 12:</span> <span style="COLOR: #0000ff">For</span> i <span style="COLOR: #0000ff">As</span> <span style="COLOR: #0000ff">Integer</span> = 0 <span style="COLOR: #0000ff">To</span> values.Length - 1</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum13"> 13:</span> <span style="COLOR: #0000ff">If</span> (values(i) <span style="COLOR: #0000ff">Is</span> <span style="COLOR: #0000ff">Nothing</span> <span style="COLOR: #0000ff">AndAlso</span> <span style="COLOR: #0000ff">GetType</span>(IEntity).IsAssignableFrom(getters(i).ReturnType)) <span style="COLOR: #0000ff">Then</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum14"> 14:</span> values(i) = ProxyFactory.GetProxy(0, <span style="COLOR: #0000ff">Nothing</span>)</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum15"> 15:</span> <span style="COLOR: #0000ff">End</span> <span style="COLOR: #0000ff">If</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum16"> 16:</span> <span style="COLOR: #0000ff">Next</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum17"> 17:</span> <span style="COLOR: #0000ff">Return</span> values</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum18"> 18:</span> <span style="COLOR: #0000ff">End</span> <span style="COLOR: #0000ff">Function</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum19"> 19:</span>  </pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum20"> 20:</span> <span style="COLOR: #0000ff">Public</span> <span style="COLOR: #0000ff">Overrides</span> <span style="COLOR: #0000ff">Function</span> GetPropertyValues(<span style="COLOR: #0000ff">ByVal</span> entity <span style="COLOR: #0000ff">As</span> <span style="COLOR: #0000ff">Object</span>) <span style="COLOR: #0000ff">As</span> <span style="COLOR: #0000ff">Object</span>()</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum21"> 21:</span> <span style="COLOR: #0000ff">Dim</span> values() <span style="COLOR: #0000ff">As</span> <span style="COLOR: #0000ff">Object</span> = <span style="COLOR: #0000ff">MyBase</span>.GetPropertyValues(entity)</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum22"> 22:</span> <span style="COLOR: #008000">' Dirty hack 2</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum23"> 23:</span> <span style="COLOR: #0000ff">For</span> i <span style="COLOR: #0000ff">As</span> <span style="COLOR: #0000ff">Integer</span> = 0 <span style="COLOR: #0000ff">To</span> values.Length - 1</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum24"> 24:</span> <span style="COLOR: #0000ff">If</span> (values(i) <span style="COLOR: #0000ff">Is</span> <span style="COLOR: #0000ff">Nothing</span> <span style="COLOR: #0000ff">AndAlso</span> <span style="COLOR: #0000ff">GetType</span>(IEntity).IsAssignableFrom(getters(i).ReturnType)) <span style="COLOR: #0000ff">Then</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum25"> 25:</span> values(i) = ProxyFactory.GetProxy(0, <span style="COLOR: #0000ff">Nothing</span>)</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum26"> 26:</span> <span style="COLOR: #0000ff">End</span> <span style="COLOR: #0000ff">If</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum27"> 27:</span> <span style="COLOR: #0000ff">Next</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum28"> 28:</span> <span style="COLOR: #0000ff">Return</span> values</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum29"> 29:</span> <span style="COLOR: #0000ff">End</span> <span style="COLOR: #0000ff">Function</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum30"> 30:</span>  </pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum31"> 31:</span> <span style="COLOR: #0000ff">Public</span> <span style="COLOR: #0000ff">Overrides</span> <span style="COLOR: #0000ff">Sub</span> SetPropertyValues(<span style="COLOR: #0000ff">ByVal</span> entity <span style="COLOR: #0000ff">As</span> <span style="COLOR: #0000ff">Object</span>, <span style="COLOR: #0000ff">ByVal</span> values() <span style="COLOR: #0000ff">As</span> <span style="COLOR: #0000ff">Object</span>)</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum32"> 32:</span> <span style="COLOR: #008000">' Dirty hack 3</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum33"> 33:</span> <span style="COLOR: #0000ff">For</span> i <span style="COLOR: #0000ff">As</span> <span style="COLOR: #0000ff">Integer</span> = 0 <span style="COLOR: #0000ff">To</span> values.Length - 1</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum34"> 34:</span> <span style="COLOR: #0000ff">If</span> <span style="COLOR: #0000ff">GetType</span>(IEntity).IsAssignableFrom(getters(i).ReturnType) <span style="COLOR: #0000ff">Then</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum35"> 35:</span> <span style="COLOR: #0000ff">Try</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum36"> 36:</span> <span style="COLOR: #008000">' Provo ad accedere alla proprietà id</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum37"> 37:</span> <span style="COLOR: #0000ff">If</span> <span style="COLOR: #0000ff">CType</span>(values(i), IEntity).ID = 0 <span style="COLOR: #0000ff">Then</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum38"> 38:</span> values(i) = <span style="COLOR: #0000ff">Nothing</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum39"> 39:</span> <span style="COLOR: #0000ff">End</span> <span style="COLOR: #0000ff">If</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum40"> 40:</span> <span style="COLOR: #0000ff">Catch</span> ex <span style="COLOR: #0000ff">As</span> Exception</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum41"> 41:</span> <span style="COLOR: #008000">' Errore. Il proxy ha restituito un errore</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum42"> 42:</span> values(i) = <span style="COLOR: #0000ff">Nothing</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum43"> 43:</span> <span style="COLOR: #0000ff">End</span> <span style="COLOR: #0000ff">Try</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum44"> 44:</span> <span style="COLOR: #0000ff">End</span> <span style="COLOR: #0000ff">If</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum45"> 45:</span> <span style="COLOR: #0000ff">Next</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum46"> 46:</span> <span style="COLOR: #0000ff">MyBase</span>.SetPropertyValues(entity, values)</pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum47"> 47:</span> <span style="COLOR: #0000ff">End</span> <span style="COLOR: #0000ff">Sub</span></pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum48"> 48:</span>  </pre> <!--CRLF--> <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: &quot;Courier New&quot;, courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #606060" id="lnum49"> 49:</span> <span style="COLOR: #0000ff">End</span> <span style="COLOR: #0000ff">Class</span></pre> <!--CRLF--></div> </div> <p>Due note: l’interfaccia <strong>IEntity</strong> è un’interfaccia base implementata dalle mie entità. Nel mio caso definisce solo la proprietà ID, ma potrebbe anche essere completamente vuota o avere altre proprietà comuni.</p> <p>La funzione <strong>SetPropertyValues</strong> è invece leggermente diversa da quella proposta sul post linkato in precedenza. In particolar modo, nel mio caso quando provavo ad accedere all’ID della mia entità, veniva sempre lanciata un’eccezione in quanto il proxy non riusciva a trovare l’entità con ID 0. Forse è un mio errore e forse la soluzione proposta (il try-catch) non è il massimo della vita, ma al momento la soluzione funziona.</p><img src="http://blogs.ugidotnet.org/alessandro_sorcinelli/aggbug/99751.aspx" width="1" height="1" /> Alessandro Sorcinelli http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2011/02/22/nhibernate-utilizzare-lo-0-per-rappresentare-lrsquoassenza-di-entitagrave.aspx Tue, 22 Feb 2011 14:52:13 GMT http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2011/02/22/nhibernate-utilizzare-lo-0-per-rappresentare-lrsquoassenza-di-entitagrave.aspx#feedback http://blogs.ugidotnet.org/alessandro_sorcinelli/comments/commentRss/99751.aspx http://blogs.ugidotnet.org/alessandro_sorcinelli/services/trackbacks/99751.aspx NH Day: annullamento iscrizione ? NHibernate http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2010/08/23/nh-day-annullamento-iscrizione.aspx <p>Causa spostamento matrimonio e del relativo viaggio di nozze, non potrò partecipare al prossimo NH Day (mannaggia alla pupazza!!!).</p> <p>Devo annullare semplicemente l'iscrizione o è possibile girare il posto a qualcun altro?<br /> Qualcuno mi sa dare informazioni?</p><img src="http://blogs.ugidotnet.org/alessandro_sorcinelli/aggbug/99101.aspx" width="1" height="1" /> Alessandro Sorcinelli http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2010/08/23/nh-day-annullamento-iscrizione.aspx Mon, 23 Aug 2010 12:09:07 GMT http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2010/08/23/nh-day-annullamento-iscrizione.aspx#feedback http://blogs.ugidotnet.org/alessandro_sorcinelli/comments/commentRss/99101.aspx http://blogs.ugidotnet.org/alessandro_sorcinelli/services/trackbacks/99101.aspx NHibernate 3 Alpha 2 NHibernate http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2010/08/18/nhibernate-3-alpha-2.aspx <p>Le ferie sono già un ricordo per me, ma almeno qualche buona notizia c'e'! <br /> Durante questo periodo di inattività è stata rilasciata l'alpha 2 di NHibernate 3.  Qui il link per il download:</p> <p><font face=""><a href="http://sourceforge.net/projects/nhibernate/files/">http://sourceforge.net/projects/nhibernate/files/</a></font></p> <p> </p><img src="http://blogs.ugidotnet.org/alessandro_sorcinelli/aggbug/99082.aspx" width="1" height="1" /> Alessandro Sorcinelli http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2010/08/18/nhibernate-3-alpha-2.aspx Wed, 18 Aug 2010 13:55:02 GMT http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2010/08/18/nhibernate-3-alpha-2.aspx#feedback http://blogs.ugidotnet.org/alessandro_sorcinelli/comments/commentRss/99082.aspx http://blogs.ugidotnet.org/alessandro_sorcinelli/services/trackbacks/99082.aspx NHDay: Iscrizione completata! NHibernate http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2010/06/15/nhday-iscrizione-completata.aspx <p>Stavo quasi per scordarmi, ma fortunatamente i posti sono ancora disponibili e l'iscrizione al prossimo <a href="http://nhday.eu/">NHDay</a> è stata fatta!</p> <p>Ci si vede li per chi ci sarà!</p><img src="http://blogs.ugidotnet.org/alessandro_sorcinelli/aggbug/98800.aspx" width="1" height="1" /> Alessandro Sorcinelli http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2010/06/15/nhday-iscrizione-completata.aspx Tue, 15 Jun 2010 21:10:48 GMT http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2010/06/15/nhday-iscrizione-completata.aspx#feedback 1 http://blogs.ugidotnet.org/alessandro_sorcinelli/comments/commentRss/98800.aspx http://blogs.ugidotnet.org/alessandro_sorcinelli/services/trackbacks/98800.aspx [VOT] - Un Homer veramente realistico! Generali http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2008/03/26/91873.aspx <p>Scusate, so di essere in iper-off-topic, ma da fan di Homer non ho potuto resistere:</p> <p><a target="_blank" href="http://kk.org/ct2/2008/03/hyperreal-homer.php">http://kk.org/ct2/2008/03/hyperreal-homer.php</a></p> <p>Veramente impressionante!</p><img src="http://blogs.ugidotnet.org/alessandro_sorcinelli/aggbug/91873.aspx" width="1" height="1" /> Alessandro Sorcinelli http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2008/03/26/91873.aspx Wed, 26 Mar 2008 16:28:54 GMT http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2008/03/26/91873.aspx#feedback http://blogs.ugidotnet.org/alessandro_sorcinelli/comments/commentRss/91873.aspx http://blogs.ugidotnet.org/alessandro_sorcinelli/services/trackbacks/91873.aspx [OT] - Post interessante su Google http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/10/01/88662.aspx <p>Vorrei segnare un post veramente interessante dedicato a Google.<br />Ecco il link: <a title="http://blogs.devleap.com/romeopruno/archive/2007/10/01/google-ci-pensi-te.aspx" href="http://blogs.devleap.com/romeopruno/archive/2007/10/01/google-ci-pensi-te.aspx">http://blogs.devleap.com/romeopruno/archive/2007/10/01/google-ci-pensi-te.aspx</a>.</p> <p>Romeo mi vorrà scusare se non ho fatto troppa attenzione al testo <img src="http://www.tuttogratis.it/img/emoticons/_Innamorato.gif" border="0" />  .</p><img src="http://blogs.ugidotnet.org/alessandro_sorcinelli/aggbug/88662.aspx" width="1" height="1" /> Alessandro Sorcinelli http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/10/01/88662.aspx Mon, 01 Oct 2007 21:26:17 GMT http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/10/01/88662.aspx#feedback 1 http://blogs.ugidotnet.org/alessandro_sorcinelli/comments/commentRss/88662.aspx http://blogs.ugidotnet.org/alessandro_sorcinelli/services/trackbacks/88662.aspx Popup MSN-Like e &quot;skinnabile&quot; http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/09/27/88571.aspx <p>Ero alla ricerca di un esempietto che mi aiutasse a visualizzare un popup MSN-LIke. Mi sono imbattuto in <a href="http://www.codeproject.com/cs/miscctrl/taskbarnotifier.asp" target="_blank">questo progetto</a> su CodeProject che fa proprio al caso mio.</p> <p>Il sorgente è un po' datato (risale al 2002), ma si converte (ed eventualmente estende) senza errori anche su Visual Studio 2005. Rispetto ad altri esempi simili che ho trovato in giro ha la possibilità di "skinnare" il popup da visualizzare con delle semplici bitmap.</p> <p>Interessante la possibilità di usare sfondi con zone trasparenti (nell'esempio sono incluse tre skin che mostrano come fare).</p><img src="http://blogs.ugidotnet.org/alessandro_sorcinelli/aggbug/88571.aspx" width="1" height="1" /> Alessandro Sorcinelli http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/09/27/88571.aspx Thu, 27 Sep 2007 03:16:33 GMT http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/09/27/88571.aspx#feedback http://blogs.ugidotnet.org/alessandro_sorcinelli/comments/commentRss/88571.aspx http://blogs.ugidotnet.org/alessandro_sorcinelli/services/trackbacks/88571.aspx Tool per la formattazione di codice Javascript Programmazione Web http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/09/26/88560.aspx <p>Segnalo un simpatico tool online per la formattazione di codice javascript: <a title="http://elfz.laacz.lv/beautify/" href="http://elfz.laacz.lv/beautify/">http://elfz.laacz.lv/beautify/</a></p> <p><br />Fonte: <a title="http://weblogs.asp.net/dwahlin/archive/2007/09/26/javascript-beautifier-tool.aspx" href="http://weblogs.asp.net/dwahlin/archive/2007/09/26/javascript-beautifier-tool.aspx">http://weblogs.asp.net/dwahlin/archive/2007/09/26/javascript-beautifier-tool.aspx</a></p><img src="http://blogs.ugidotnet.org/alessandro_sorcinelli/aggbug/88560.aspx" width="1" height="1" /> Alessandro Sorcinelli http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/09/26/88560.aspx Wed, 26 Sep 2007 19:50:33 GMT http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/09/26/88560.aspx#feedback 1 http://blogs.ugidotnet.org/alessandro_sorcinelli/comments/commentRss/88560.aspx http://blogs.ugidotnet.org/alessandro_sorcinelli/services/trackbacks/88560.aspx Javascript Debugging anche in Visual Studio 2005 Programmazione Web Visual Studio e .NET http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/08/01/87135.aspx <p>Personalmente non lo sapevo, ma  anche su Visual Studio 2005 è possibile debuggare script JS con tutti i vantaggi che ne conseguono! <br /> Un caloroso ringraziamento a <a href="http://www.nablasoft.com/alkampfer">Gian Maria</a> che mettendo, un commento al mio <a href="http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/07/31/87053.aspx">post</a> sul debugger JS in Visual Studio 2008, ha aperto nella mia vita lavorativa,  nuovi orizzonti. <img alt="" border="0" src="http://www.tuttogratis.it/img/emoticons/_hi_hi.gif" /> </p> <p>Questa <a href="http://support.microsoft.com/kb/317699/en-us">pagina</a> spiega in dettaglio come fare. Unica accortezza: fate attenzione a non avere disabilitato il debugging di script su Internet Explorer. </p> <p>Sicuramente da adesso in poi, il mio computer riceverà molti meno insulti!! </p> Technorati tags: <a rel="tag" href="http://technorati.com/tag/Javascript">Javascript</a>, <a rel="tag" href="http://technorati.com/tag/Visual Studio 2005">Visual Studio 2005</a> <br /><br /><img src="http://blogs.ugidotnet.org/alessandro_sorcinelli/aggbug/87135.aspx" width="1" height="1" /> Alessandro Sorcinelli http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/08/01/87135.aspx Wed, 01 Aug 2007 16:05:00 GMT http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/08/01/87135.aspx#feedback 3 http://blogs.ugidotnet.org/alessandro_sorcinelli/comments/commentRss/87135.aspx http://blogs.ugidotnet.org/alessandro_sorcinelli/services/trackbacks/87135.aspx Ajax ControlToolkit: evitare il postback sul bottone del CalendarExtender ASP.NET e AJAX http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/08/01/87101.aspx <P>Il CalendarExtender &#232; sicuramente un bel controllo. Nel senso che l'idea di base &#232; buona, forse un po' meno l'implementazione attuale. Ci sono infatti una serie di problemi che ne rendono l'utilizzo quantomeno fastidioso.</P> <P>Dei problemi di memoria ne avevo parlato in un mio precedente <A href="http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/06/26/83503.aspx" target=_blank>post</A>. Se scaricate il codice sorgente dell'ultimo check-in dovrebbero essere risolti o almeno nelle mie applicazioni non si presentano pi&#249;.<BR>Ci sono per&#242; altri problemi. In particolare quando si utilizza un bottone per far aprire il nostro calendario ci sono subito due cose che saltano all'occhio:</P> <OL> <LI>Clikkando sul bottone il popup del calendario viene visualizzato. Se si clikka in un qualsiasi punto dello schermo il calendario non viene nascosto in automatico, ma occorre necessariamente clikkare nuovamente sul bottone per nascondere il calendario.<BR>Questo &#232; un comportamento anomalo per gli utenti, dato che solitamente gli altri calendari che si trovano in giro, non hanno questo comportamento. Non a caso questa modifica &#232; uno dei work item pi&#249; votati sul sito di <A href="http://www.codeplex.com/AtlasControlToolkit/" target=_blank>CodePlex</A>. <LI>Quando si clikka sul bottone per visualizzare il calendario viene effettuato un postback della pagina.</LI></OL> <P>Il secondo problema salta fuori quando si utilizza un ImageButton e pu&#242; risultare fastidioso, prima di tutto per il postback in se e in secondo luogo perch&#232; se si hanno dei validator questi "scattano". Risolvere quest'ultimo problema &#232; banale, basta settare la propriet&#224; <EM>CauseValidation</EM> dell'ImageButton a <EM>False</EM>.<BR>Rimane per&#242; il postback che, personalmente, trovo inutile. Per risolvere anche questo problema e in attesa che sia fissato ufficialmente, &#232; possibile usare questo workaround:</P> <P></P> <DIV class=wlWriterEditableSmartContent id=57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:9a22078d-1e2f-4dab-a0b6-7cb7d82efae4 contentEditable=false style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"><PRE style="OVERFLOW: auto; BACKGROUND-COLOR: white"><DIV><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><SPAN style="COLOR: #008080"> 1</SPAN> <SPAN style="COLOR: #008000"><!--</SPAN><SPAN style="COLOR: #008000"> TextBox </SPAN><SPAN style="COLOR: #008000">--></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #008080"> 2</SPAN> <SPAN style="COLOR: #000000"></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">asp:TextBox </SPAN><SPAN style="COLOR: #ff0000">ID</SPAN><SPAN style="COLOR: #0000ff">="txtCalendar"</SPAN><SPAN style="COLOR: #ff0000"> runat</SPAN><SPAN style="COLOR: #0000ff">="server"</SPAN><SPAN style="COLOR: #0000ff">></</SPAN><SPAN style="COLOR: #800000">asp:TextBox</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #008080"> 3</SPAN> <SPAN style="COLOR: #000000"></SPAN><SPAN style="COLOR: #008000"><!--</SPAN><SPAN style="COLOR: #008000"> Anchor + Image </SPAN><SPAN style="COLOR: #008000">--></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #008080"> 4</SPAN> <SPAN style="COLOR: #000000"></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">a </SPAN><SPAN style="COLOR: #ff0000">id</SPAN><SPAN style="COLOR: #0000ff">="btnCalendar"</SPAN><SPAN style="COLOR: #0000ff">><</SPAN><SPAN style="COLOR: #800000">img </SPAN><SPAN style="COLOR: #ff0000">src</SPAN><SPAN style="COLOR: #0000ff">="images/calendar.png"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN style="COLOR: #0000ff">/></</SPAN><SPAN style="COLOR: #800000">a</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #008080"> 5</SPAN> <SPAN style="COLOR: #000000"></SPAN><SPAN style="COLOR: #008000"><!--</SPAN><SPAN style="COLOR: #008000"> Calendar Extender </SPAN><SPAN style="COLOR: #008000">--></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #008080"> 6</SPAN> <SPAN style="COLOR: #000000"></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">ajax:CalendarExtender </SPAN><SPAN style="COLOR: #ff0000">ID</SPAN><SPAN style="COLOR: #0000ff">="CalendarExtender1"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN style="COLOR: #008080"> 7</SPAN> <SPAN style="COLOR: #ff0000"> TargetControlID</SPAN><SPAN style="COLOR: #0000ff">="txtCalendar"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN style="COLOR: #008080"> 8</SPAN> <SPAN style="COLOR: #ff0000"> PopupButtonID</SPAN><SPAN style="COLOR: #0000ff">="btnCalendar"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN style="COLOR: #008080"> 9</SPAN> <SPAN style="COLOR: #ff0000"> runat</SPAN><SPAN style="COLOR: #0000ff">="server"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #008080">10</SPAN> <SPAN style="COLOR: #000000"></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">ajax:CalendarExtender</SPAN><SPAN style="COLOR: #0000ff">></SPAN></DIV></PRE><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin. http://dunnhq.com --></DIV> <P></P> <P><FONT color=#000000>Sostanzialmente l'ImageButton viene sostituito da un anchor e da un'immagine. In questo modo il postback iniziale non avviene pi&#249; e l'apertura del calendario risulta molto pi&#249; veloce.</FONT></P></SPAN></SPAN></SPAN><img src="http://blogs.ugidotnet.org/alessandro_sorcinelli/aggbug/87101.aspx" width="1" height="1" /> Alessandro Sorcinelli http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/08/01/87101.aspx Wed, 01 Aug 2007 10:08:00 GMT http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/08/01/87101.aspx#feedback 5 http://blogs.ugidotnet.org/alessandro_sorcinelli/comments/commentRss/87101.aspx http://blogs.ugidotnet.org/alessandro_sorcinelli/services/trackbacks/87101.aspx Velocissima considerazione su Visual Studio 2008 beta 2 ASP.NET e AJAX Visual Studio e .NET http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/07/31/87053.aspx <p>Anche io come molti altri, ho scaricato la beta 2 di Visual Studio 2008. Nel mio caso mi sono scaricato la macchina virtuale per non avere problemi di installazione e soprattutto di rimozione quando arriveranno altri aggiornamenti.</p> <p>Essendo uno sviluppatore quasi totalmente orientato sul web, la cosa principale che mi premeva verificare erano le novit&#224; su ASP.NET e in particolare il debugging e l'intellisense su Javascript. Non ci posso credere ma funziona veramente! Non sono solo dicerie!!! <img src="http://www.tuttogratis.it/img/emoticons/_urrah5.gif" border="0"><br>Si possono inserire i punti di interruzione come nel codice VB e verificare i valori delle variabili. Mi viene quasi da piangere alla sola idea di abbandonare i vari alert o il pi&#249; sofisticato <a href="http://www.getfirebug.com/" target="_blank">Firebug</a> (che fa tante altre cose, ma che usavo anche per avere errori JS pi&#249; precisi).</p><img src="http://blogs.ugidotnet.org/alessandro_sorcinelli/aggbug/87053.aspx" width="1" height="1" /> Alessandro Sorcinelli http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/07/31/87053.aspx Tue, 31 Jul 2007 14:20:00 GMT http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/07/31/87053.aspx#feedback 3 http://blogs.ugidotnet.org/alessandro_sorcinelli/comments/commentRss/87053.aspx http://blogs.ugidotnet.org/alessandro_sorcinelli/services/trackbacks/87053.aspx .NET Tip: recuperare l'owner di un file Visual Studio e .NET http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/07/31/87050.aspx <P>Condivido questo piccolo tip, sperando di velocizzare la ricerca a qualcun altro nel caso avesse la stessa mia esigenza.<BR>Tornando a noi, pensavo erroneamente che la classe FileInfo contenesse tutte le informazioni relative ad un file, compreso l'owner. <BR>Invece non &#232; cos&#236;! Fortunamente se stiamo utilizzando NTFS (non so se funziona anche in altri contesti) e il Framework 2.0 possiamo utilizzare le nuove funzioni per la gestione della security e delle ACL. <BR>Per recuperare l'owner del file &#232; sufficiente utilizzare il seguente codice: </P> <P></P> <DIV class=wlWriterEditableSmartContent id=57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:65a61c71-fbd8-4b7f-9d98-8711aaf3875e contentEditable=false style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"><PRE style="OVERFLOW: auto; BACKGROUND-COLOR: white"><DIV><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><SPAN style="COLOR: #008080">1</SPAN> <SPAN style="COLOR: #0000ff">Dim</SPAN><SPAN style="COLOR: #000000"> fInfo </SPAN><SPAN style="COLOR: #0000ff">As</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">New</SPAN><SPAN style="COLOR: #000000"> FileInfo(filePath) </SPAN><SPAN style="COLOR: #008080">2</SPAN> <SPAN style="COLOR: #000000"></SPAN><SPAN style="COLOR: #0000ff">Dim</SPAN><SPAN style="COLOR: #000000"> owner </SPAN><SPAN style="COLOR: #0000ff">As</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">String</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #008080">3</SPAN> <SPAN style="COLOR: #000000"></SPAN><SPAN style="COLOR: #0000ff">Try</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #008080">4</SPAN> <SPAN style="COLOR: #000000"> owner </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> fInfo.GetAccessControl.GetOwner(</SPAN><SPAN style="COLOR: #0000ff">GetType</SPAN><SPAN style="COLOR: #000000">(System.Security.Principal.NTAccount)).Value </SPAN><SPAN style="COLOR: #008080">5</SPAN> <SPAN style="COLOR: #000000"></SPAN><SPAN style="COLOR: #0000ff">Catch</SPAN><SPAN style="COLOR: #000000"> ex </SPAN><SPAN style="COLOR: #0000ff">As</SPAN><SPAN style="COLOR: #000000"> Exception </SPAN><SPAN style="COLOR: #008080">6</SPAN> <SPAN style="COLOR: #000000"> owner </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Sconosciuto</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #008080">7</SPAN> <SPAN style="COLOR: #000000"></SPAN><SPAN style="COLOR: #0000ff">End</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">Try</SPAN></DIV></PRE><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin. http://dunnhq.com --></DIV> <P></P><img src="http://blogs.ugidotnet.org/alessandro_sorcinelli/aggbug/87050.aspx" width="1" height="1" /> Alessandro Sorcinelli http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/07/31/87050.aspx Tue, 31 Jul 2007 14:02:00 GMT http://blogs.ugidotnet.org/alessandro_sorcinelli/archive/2007/07/31/87050.aspx#feedback http://blogs.ugidotnet.org/alessandro_sorcinelli/comments/commentRss/87050.aspx http://blogs.ugidotnet.org/alessandro_sorcinelli/services/trackbacks/87050.aspx