Posts
163
Comments
179
Trackbacks
5
gennaio 2010 Blog Posts
Recuperare la public token di un assembly da Visual Studio


Dovendo lavorare spesso con assembly con strong name e avendo bisogno spesso e volentieri di conoscere la public token dell’assembly segnato, il seguente post potrebbe essere molto utile:

http://blogs.msdn.com/kaevans/archive/2008/06/18/getting-public-key-token-of-assembly-within-visual-studio.aspx

In sostanza viene indicato come creare in Visual Studio un comando che, utilizzando il tool SN, visualizza la public token dell’assembly direttamente nell’output window.

Per quanto mi riguarda un tip utilissimo!

posted @ mercoledì 13 gennaio 2010 12:50 | Feedback (0)
NHibernate: lazy load e il parametro not-found=”ignore”


Primo post dell’anno, sempre sul caro e “vecchio” NHibernate.
Oggi mi è capitata una situazione particolare, anche se ben codificata. Scenario molto semplice: entità con una reference ad un’altra entità. Nello specifico un preventivo collegato ad un cliente.
Il mapping che stavo utilizzando era questo:

   1: <class name="Preventivo"  table="Preventivi_Testate" lazy="true">
   2:     <id name="ID" type="Int32" unsaved-value="0">
   3:       <generator class="native" />
   4:     </id>
   5:     ...
   6:     ...
   7:     ...
   8:     <many-to-one name="Cliente" class="Cliente" column="IDAnagrafica" not-found="ignore"></many-to-one>
   9: </class>

Apparentemente tutto corretto e infatti tutto funziona senza problemi.
Andando però a controllare le query che vengono generate da NHibernate si noterà che il lazy load sull’associazione Cliente non funziona e ogni volta che si recupera un Preventivo si va a fare una query anche per recuperare il Cliente. Questo anche senza accedere alla proprietà Cliente sul Preventivo.

Il problema è dovuto al parametro not-found=”ignore”. Rimuovendolo tutto torna a funzionare correttamente.
Il comportamento è in effetti legittimo e codificato. In presenza dell’attributo not-found=”ignore”, NHibernate deve restituire l’entità nel caso sia presente e Null (o Nothing) in caso l’entità non sia presente. Per fare questo l’unico modo è ovviamente quello di andare ad eseguire la query sul database. Nel caso in cui l’attributo not-found non sia specificato, NHibernate può tranquillamente istanziare un proxy ed eventualmente lanciare un’eccezione nel caso l’entità non sia trovata.

Attenzione quindi ad utilizzare l’attributo not-found=”ignore” perché vi potreste trovare con una moltitudine di query eseguite a vostra insaputa.

posted @ martedì 12 gennaio 2010 16:24 | Feedback (0)
News
Se volete sapere con chi avete a che fare eccomi qui in uno "scatto" lavorativo.

La mia foto

Logo MCAD
Logo MCTS